Como preencher um combobox usando um Qvector
-
Pessoal,
Preciso mais uma vez da ajuda de vocês, preciso preencher um combobox usando um vetor.
Tenho uma tela em que o usuario digita os dados, esses dados são armazenados em um Qvector.
Agora preciso preencher um combobox com os dados desse Qvector.
Segue abaixo o código de preenchimento do Qvector:@QString IP;
QTextCharFormat textFormat;
IP = ui->Campo_Digitar_ip->text();
IP += "\n";
QTextCursor cursor(ui->textEdit->textCursor());
cursor.insertText(IP);
vetorIP.append(IP);@E como tentei até o momento preencher o combobox
@while(vetorIP.operator !=(0))
{
ui->comboBox_IP_Cadastro->addItem(vetorIP);
}@ -
Não entendí o seu "while".
Não seria +- assim?
@
for (int i = 0; i < vetorIP.size(); ++i) {
ui->comboBox_IP_Cadastro->addItem(vetorIP.at(i));
}
@Você poderia tentar usar o AddItens, mas ele recebe um QStringList e não um QVector.
--
-
TioRoy,
Foi teste mesmo, imaginei que estava errado mesmo o laço de repetição mas estava sem ideias de como fazer.
Cara poderia me dar um exemplo de como faria para preencher com um QStringList? Pois quando estava testando não consegui incluir varios (neste caso) IPs em uma lista, somente um susbstituindo o outro.
-
Olá,
Veja se esse exemplo se aplica ao seu caso:
@
// Use o seu combo já definido
QComboBox *comboBox = new QComboBox;// C++11 compativel
QStringList list = {
"192.168.1.1" ,
"192.168.1.2",
"192.168.1.3"
};// Insere a lista a partir do index 0 (zero)
comboBox->insertItems(0,list);
@Nota: Para compilar código C++11 coloque no seu arquivo .pro: @QMAKE_CXXFLAGS += -std=c++11@
-
Volnei,
O problema que o corre é que fiz uma tela para o usuario digitar esses dados em um textEdit, dele quero jogar em um QStringList e depois jogar em um combobox por isso não dá para usar:
@ // C++11 compativel
QStringList list = {
"192.168.1.1" ,
"192.168.1.2",
"192.168.1.3"
};@ -
você usa algum separador? tipo espaço em branco ou virgulas?
Se sim, pode fazer assim então:Presumo que o usuário irá digitar por no textEdit assim:
192.168.1.1,192.168.1.2,192.168.1.3
Fazer isso passar online para o combo não é um boa opção por questões do usuário
poder errar e corrigir o texto. Então digamos que após ele terminar de digitar ele
aperte um botão. Ok?@
/* Na funcao membro que executa o código do botao
codifique algo assim
*/
QStringList list;/* O 'simplified' e para tirar espacoes em branco desnecessarios
- o split(',') ira separar o texto assim com se digitasse assim:
- list << "IP1" << "IP2" << "IP3" ... ;
- Se o separador for outro caractér simplesmente troque-o.
- Se for espaco em branco, tire o 'simplified()' use apenas o spli(' ')
*/
list = textEdit->toPlainText().simplified().split(',');
comboBox->clear(); // limpa antes de colocar os novos valores
comboBox->insertItems(0,list);
@
-
Caras,
Valeu mesmo pela ajuda mas para terminar como faria para acessar essa list em outra tela?
Fiz o seguinte criei um .h com uma variavel extern e dela dento jogo os valores do list nesta variavel e tento capturar na outra tela. Tem o link do projeto aqui:
https://docs.google.com/file/d/0BwQ4G9j5uY1JUzdfSFlrYTV5V2s/edit?usp=sharing
-
Bom dia lima_will,
Procure não usar variáveis globais.
Bem, você pode passar a sua QStringList como um parâmetro que está definido na classe da janela a ser chamada.
Por exemplo:
A classe da Ui a ser camada é incluir_ip() então na definição:
@
explicit incluir_ip(QWidget *parent = 0, QStringList list);
@na mainwindow.cpp
@
void MainWindow::on_Button_IPS_clicked()
{
// ao invés disso
incluir_ip ips;
ips.exec();// use isso
incluir_ip *ips = new incluir_ip(this, list);
incluir_ip->show();
}
@Isso é apenas uma das várias técnicas existentes para isso.
Mas eu acho que funcionará bem para você. -
Bom dia Volneicp,
Ontem a noite estava lendo sobre isso que não é aconselhavél usar variaveis globais. Mas cara ainda não deu certo mesmo com suas dicas, segue como está as classes:
incluir_ip.h
@#ifndef INCLUIR_IP_H
#define INCLUIR_IP_H#include <QDialog>
#include <QStringList>namespace Ui {
class incluir_ip;
}class incluir_ip : public QDialog
{
Q_OBJECTpublic:
explicit incluir_ip(QWidget *parent = 0, QStringList list);~incluir_ip();
private slots:
void on_Botao_incluir_ip_clicked();void on_Botao_voltar_ip_clicked(); void on_Botao_incluir_clicked();
private:
Ui::incluir_ip *ui;
};#endif // INCLUIR_IP_H@
incluir_ip.cpp
@#include "incluir_ip.h"
#include "ui_incluir_ip.h"
#include <QDebug>incluir_ip::incluir_ip(QWidget *parent) :
QDialog(parent),
ui(new Ui::incluir_ip)
{
ui->setupUi(this);
}incluir_ip::~incluir_ip()
{
delete ui;
}void incluir_ip::on_Botao_incluir_ip_clicked()
{}
void incluir_ip::on_Botao_voltar_ip_clicked()
{
QStringList listas;listas = ui->textEdit->toPlainText().simplified().split(','); qDebug() << listas; close();
}
void incluir_ip::on_Botao_incluir_clicked()
{
QString IP;
IP = ui->Campo_Digitar_ip->text();
IP += ",";
IP += "\n";
QTextCursor cursor(ui->textEdit->textCursor());
cursor.insertText(IP);
ui->Campo_Digitar_ip->clear();
}@mainwindows.cpp
@#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "incluir_ip.h"
#include "Globais.h"MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);QStringList list; ui->comboBox_IPS->insertItems(0,list);
}
MainWindow::~MainWindow()
{
delete ui;
}void MainWindow::on_Button_IPS_clicked()
{
incluir_ip *ips = new incluir_ip(this, list);
incluir_ip->show();
}@A saida é a seguinte:
@C:\Users\willian.toledo\Documents\QT\Duvida\incluir_ip.h:16: error: C2548: 'incluir_ip::incluir_ip' : missing default parameter for parameter 2
C:\Users\willian.toledo\Documents\QT\Duvida\incluir_ip.cpp:7: error: C2511: 'incluir_ip::incluir_ip(QWidget *)' : overloaded member function not found in 'incluir_ip'
c:\users\willian.toledo\documents\qt\duvida\incluir_ip.h:11: see declaration of 'incluir_ip'
C:\Users\willian.toledo\Documents\QT\Duvida\incluir_ip.cpp:47: error: C1004: unexpected end-of-file found
C:\Users\willian.toledo\Documents\QT\Duvida\incluir_ip.h:16: error: C2548: 'incluir_ip::incluir_ip' : missing default parameter for parameter 2
C:\Users\willian.toledo\Documents\QT\Duvida\mainwindow.cpp:4: error: C1083: Cannot open include file: 'Globais.h': No such file or directory@Poderia me mostrar o que fiz de errado dessa vez? E muito grato pela ajuda!
-
Cara,
Segue o link do projeto:
https://docs.google.com/file/d/0BwQ4G9j5uY1JU2tvM1BDenpELXM/edit?usp=sharing
Valeu mesmo pela ajuda!
-
This post is deleted!
-
This post is deleted!