QT Drag and Drop mit eigener Klasse



  • Hi ich hab ne frage bezügich Drag and Drop.

    Ich will innerhalb von einem Baum einzelne Knoten verschieben.

    Habe dafür ein QAbstractItemModel abgeleitet und Benutze es mit einer QTreeView. Funktioniert soweit auch alles.

    Habe dann noch Drag and Drop aktiviert und die Animationen passen auch soweit.

    Nur wie bekomme ich die Daten von a nach b ?

    In den ganzen Beispielen wird mimeData(..) und dropMimeData(..) verwedet. Mit Strings sieht das auch ganz gut aus, will aber eine eigene Klasse benutzen.

    Klasse sieht im Grunde so aus

    class Node{
    string name;
    int value;
    vector<Node*> childs;
    }
    

    Wie kann ich sowas als MimeData en-/decoden. Hat da jemand ein Beispiel oder kennt ein Tutorial ?



  • Hmm jetzt hatte ich das mit den MimeData fett gedruckt...

    Also am liebsten würd ich ja einfach nen QModelIndex oder so verwenden
    und mir dann einfach wieder mein Objekt casten. Aber scheint nicht zu gehen,
    zumindest habe ich nichts derartiges gefunden.



  • Also ich hab jetzt ne Lösung. Gefällt mir nicht so gut,
    aber funktioniert.

    class MyMimeData: public QMimeData{
    Q_OBJECT
    public:
        Node *myData;
    
    };
    

    In der Methode mimeData speichere ich dort einfach mein Objekt. In dropMimeData
    kann ich mir das dann per qobject_cast wieder holen.

    Also Thema hat sich erstmal erledigt.
    Sollte jemand ne schönere Lösung haben, bitte melden 🙂


Anmelden zum Antworten