Drag&Drop in QML



  • Sind hier zufällig irgendwelche QML Experten unterwegs? Ich hatte das immer ignoriert, spiel aber grad privat etwas damit rum. Wollte mal was neues probieren.

    Ich muss zugeben, ich komm damit nicht so einfach zurecht, wie ich erwartet hatte.

    Ich habe eine ListView, die hat eine MouseArea und eine DropArea. Damit kann man Dateien aus dem Explorer draufziehen, soweit kein Problem.
    Jetzt will ich die Elemente da raus auf ein anderes Control ziehen/kopieren können. Und da ist mir nicht mal klar, ob ich das Layout richtig aufgebaut habe.

    Ich kann die Elemente frei bewegen (was ich gar nicht will, die sollen bleiben, wo die sind), aber nicht auf das Element drauf. Ich hab da einfach ein Rectangle mit einer DropArea definiert, da scheint aber "drüber" zu liegen, wenn ich ein Item draufziehe, verschwindet das drunter.

    So in etwa schaut der Code aus:

    RowLayout {
            anchors.fill: parent
            spacing: 2
    
    		ProjectStructure {
    			id: "projectStructure"
                            Layout.preferredWidth: 100
    		}
    		
            ColumnLayout {
                Layout.fillHeight: true
                Layout.fillWidth: true
                Rectangle {
                    Layout.fillWidth: true
                    width: parent.width
                    height: 200
                    color: 'yellow'
    
                    DropArea {
                        anchors.fill: parent
                        onEntered: {
                            console.log("Entered!")
                        }
                    }
                }
    	}
    

    Und innerhalb von dem "ProjectStructure" ist eine MouseArea in einem delegate vom Typ Item:

    MouseArea {
                anchors.fill: parent
                onClicked: listView.currentIndex = index
                drag.target: item
            }
    

    Wie macht man das richtig?
    Und grundsätzliche Frage - was ist die beste Quelle, um strukturiert die QML Konzepte zu lernen?



  • Wie wäre es mit der offiziellen Dokumentation von Qt? Die hat oft auch eine Beispiele für die Funktionen.
    z.b. für Drag and Drop: https://doc.qt.io/qt-5/qtquick-draganddrop-example.html



  • Ja, da schau ich natürlich schon nach. Aber vielleicht gibts noch andere Quellen, die gut/strukturiert die wichtigen Konzepte beschreiben?

    Diese Beispiele habe ich schon gesehen. Mag sein, dass ich blind bin, aber ich erkenne da nichts neues, ich vermute, das würde sich genauso wie bei mir verhalten.
    Bzw., es kann gut sein, dass ich beim Aufbau des Layouts was falsch gemacht habe. Evtl. ist die MouseArea zu groß und geht über die ListView hinaus. Ich kann nämlich die Items beliebig im Fenster positionieren, obwohl die ListView 100 Pixel breit sein sollte. Woran liegt das?


Anmelden zum Antworten