Domanda

Come faccio a fare un QVector (o qualche altra classe contenitore) di un numero dinamica di widget, come QPushButton o QComboBox in Qt 4?

Ho usato il seguente nel costruttore della mia classe di finestra:

QVector<QComboBox*> foo; // Vector of pointers to QComboBox's

E ora voglio riempirlo con qualche numero di controlli che possono cambiare in modo dinamico:

for(int count = 0; count < getNumControls(); ++count) {
    foo[count] = new QComboBox();
}

Ho cercato per ore cercando di trovare la risposta a questo. I forum Qt ma va specificato facendo un QPtrList, ma quella classe non esiste più in Qt4. Mi piacerebbe poi cerco di ottenere il valore di testo da ogni utilizzando l'indicizzazione su array stile o la funzione .at().

Vorrei davvero apprezzare un esempio di dichiarare, l'inizializzazione, e popolando qualsiasi struttura di dati di qualsiasi QWidgets (QComboBox, QPushButton, ecc.)

È stato utile?

Soluzione

qui si va:)

#include <QWidget>
#include <QList>
#include <QLabel>
...
QList< QLabel* > list;
...

list << new QLabel( parent, "label 1" );
..
..

foreach( QLabel* label, list )  {
label->text();
label->setText( "my text" );
}

Se si sta cercando solo per ottenere un semplice esempio per lavorare, è importante che i widget hanno un genitore (per il contesto / ripulire) scopi.

Spero che questo aiuti.

Altri suggerimenti

foo[count] = new QComboBox();

Ciò non influirà la dimensione di foo. Se non c'è già un elemento al conteggio indice, questo sarà sicuro. Vedere push_back , o operatore <<, che aggiungono un elemento alla fine della lista.

QVector<QComboBox*> foo;
// or QList<QComboBox*> foo;
for(int count = 0; count < getNumControls(); ++count) {
    foo.push_back(new QComboBox());
    // or foo << (new QComboBox());
}

In seguito, per recuperare i valori:

foreach (QComboBox box, foo)
{
  // do something with box here
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top