In QObject in der Combo-Box von Qt
Frage
Ich habe eine benutzerdefinierte Klasse I erstellt, sagen MyClass. Nun, wie Sie einen Verweis auf MyClass der Referenz als zweiten Parameter in dem Kombinationsfeld unten hinzuzufügen:
this-> UI-> comboBox-> addItem ( "item-1");
Ziel ist es, wenn Element geändert selbst abgefeuert wird, ich will demnach, dass bestimmte Klasseninstanz von MyClass und Verfahren erhalten.
Lösung
Zuerst müssen Sie verwenden Q_DECLARE_METATYPE(MyClass*)
, so dass der Typ sein kann, in QVariant
verwendet. Dann können Sie den Artikel wie folgt hinzu:
this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));
Und es zurück:
this->ui->combobox->itemData(x).value<MyClass*>();
Andere Tipps
Über Antwort Syntax ist etwas falsch,
Verwendung Q_DECLARE_METATYPE (MyClass *), in der MyClass Header-Datei, so dass die Art in QVariant verwendet werden.
fügen Sie den Artikel wie folgt:
this-> UI-> comboBox-> addItem ( "item-1", QVariant :: fromValue (myClass));
Und es zurück: this-> UI-> combobox-> itemData (x) .value ();