Question

J'ai une classe personnalisée j'ai créé, par exemple MyClass. Maintenant, comment ajouter une référence à la référence de MyClass comme second paramètre dans la zone de liste déroulante ci-dessous:

this-> UI-> comboBox-> addItem ( "item-1",);

Le but est quand même élément a été modifié est tiré, je veux obtenir cette instance de classe spécifique de MyClass et processus en conséquence.

Était-ce utile?

La solution

D'abord, vous devez utiliser Q_DECLARE_METATYPE(MyClass*) , de sorte que le type peut être utilisé dans QVariant. Ensuite, vous pouvez ajouter l'élément comme ceci:

this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));

Et le récupérer:

this->ui->combobox->itemData(x).value<MyClass*>();

Autres conseils

Au-dessus de la syntaxe de réponse est légèrement incorrecte,

utiliser Q_DECLARE_METATYPE (MyClass *), dans le fichier d'en-tête de MyClass, de sorte que le type peut être utilisé dans QVariant.

ajouter l'élément comme celui-ci:

this-> UI-> comboBox-> addItem ( "item-1", QVariant :: fromValue (myClass));

Et le récupérer: this-> UI-> combobox-> itemData (x) .value ();

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top