QListWidgetItem mit Objekt verlinken



  • Hi,
    Gibt es die Möglichkeit einem QListWidgetItem ein Object einer selbst programmierten Klasse zuzuweisen, sodass wenn das QListWidgetItem ausgewählt wird, ich das Object auslesen kann und damit bestimmte Labels beeinflussen kann?



  • Normalerweise kannst du Elementen von QAbstractItemModel über data und benutzerdefinierte Rollen, z.B. Qt::UserRole beliebige Daten zuweisen. Ob QListWidgetItem das auch unterstützt oder weitere Daten ignoriert, weiß ich nicht, habs noch nie benutzt.



  • Hättest du ein Beispiel wie das mit QAbstractItemModel geht?



  • Die Qt Doku hat viele Beispiele 😉 QAbstractItemModel ist die Basisklasse und sie sieht die entsprechende Schnittstelle vor. Entweder leitest du davon ab und implementierst es selber, oder du benutzt eine der abgeleiteten Klassen aus dem Framework. Wenn QlistWidgetItem das unterstützt, spricht ja nichts dagegen. Wenn nicht, könntest du stattdessen z.B. ein QStandardItemModel nehmen.



  • Ich hab ein bischen durch die Qt Doku geschaut und nacht QListWidgetItem gesucht, habe die Methode setData() gefunden, welche nur ein QVariant Object akzeptiert, mein Object hat aber die Klasse Contact. Ich weiß nicht wie ich das lösen soll:( Bin recht neu in QT



  • Du machst dann halt in etwa sowas:

    class Contact
    {
    //whatever
    };
    
    Q_DECLARE_METATYPE(Contact);
    

    Dann kannst du das in ein QVariant reinstecken und wieder rausholen. Oder du steckst einen Zeiger darauf in den QVariant, dann musst du auch das Q_DECLARE_METATYPE für den Zeiger definieren.


Anmelden zum Antworten