[QT] Userdata an QComboBox anhängen
-
Hi,
ich würde ganz gerne meinen CB Einträgen Information anhängen welche (non QT) Objekte durch sie representiert werden.Ich habe vermutet das ich das entweder mit
QVariant qVariantFromValue ( const T & value )
oder
QVariant ( int typeOrUserType, const void * copy )
irgendwie zum Ziel komm aber es will einfach nicht klappen.
Die erste Variante kapituliert direkt zur Compilezeit wenn ich versuche
qVariantFromValue mit meinem datentyp aufzurufen.Die Zweite Alternative:
QVariant userData(QVariant::UserType, (void*)nmod); QIcon ic = QIcon(QString("./%1.ico").arg(nmod->name())); modSelectionCombo->addItem(ic, QString("%1").arg(nmod->name()),userData);
void MapView3::modActivated(int index) { //QVariant hm = modSelectionCombo->itemData(index,QVariant::UserType); QVariant hm = modSelectionCombo->itemData(index); void * ptr = hm.value<void*>(); //mvSpam() << QString("Mod %1 was activated").arg(test->name()) << endl; }
spukt mir hingegen nur NULL ptr aus. Ich bekomm auf diese Art zwar im Debugger die Rückmeldung dass das Empfangene Signal tatsächlich vom Typ 127 (QVariant::UserType) ist allerdings weiss ich nicht wie ich nun an den Wert gelangen soll.
Ich glaube die zweite Variante ist in irgendeiner Form möglich, allerdings fallen mir keine Alternativen mehr ein es zu versuchen.
Hat jemand Rat für mich? Ich wäre sehr dankbar dafür.
Mfg
Grey
-
Schau dich bei QMetaType um (wirst eigentlich aus der Doku zu QVariant direkt weiter verlinkt)
Speziell
* Q_DECLARE_METATYPE (Macro) (soll für QVariant reichen)
* qRegisterMetaType() (Benötigt für Parameter bei Signal/Slot)
-
l'abra d'or schrieb:
Schau dich bei QMetaType um (wirst eigentlich aus der Doku zu QVariant direkt weiter verlinkt)
Speziell
* Q_DECLARE_METATYPE (Macro) (soll für QVariant reichen)
* qRegisterMetaType() (Benötigt für Parameter bei Signal/Slot)Dank Dir soweit,
die Doku dazu sieht schon vielversprechend aus. Ich werd ne Rückmeldung posten wenn ich Zeit gefunden habe die Variante anzutesten.Grüße