[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


Anmelden zum Antworten