Aggiungere QObject nella casella combinata di Qt
Domanda
Ho una classe personalizzata che ho creato, diciamo MyClass. Ora come aggiungere un riferimento al riferimento di MyClass come secondo parametro nella casella combinata di seguito:
this-> UI-> comboBox-> addItem ( "item-1",);
Scopo è quello di quando l'oggetto modificato anche è sparato, voglio ottenere tale istanza specifica classe di MyClass e il processo di conseguenza.
Soluzione
Per prima cosa è necessario utilizzare Q_DECLARE_METATYPE(MyClass*)
, in modo che il tipo può essere utilizzato in QVariant
. Quindi è possibile aggiungere la voce in questo modo:
this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));
E tornare indietro:
this->ui->combobox->itemData(x).value<MyClass*>();
Altri suggerimenti
Sopra sintassi risposta è un po 'scorretto,
utilizzare Q_DECLARE_METATYPE (MyClass *), nel file di intestazione MyClass, in modo che il tipo può essere utilizzato in QVariant.
aggiungere la voce in questo modo:
this-> UI-> comboBox-> addItem ( "item-1", QVariant :: fromValue (myClass));
E tornare indietro: this-> UI-> combobox-> itemData (x) .value ();