如何在QML ListView

时间:2017-04-10 09:35:13

标签: qt qml qtquick2 qt-quick

我使用QtQuick,我制作了一个能够拖放项目的QML项目。

我正在尝试向拖放功能添加规则:您不能在两个指定项目之间删除项目

要解释我的问题,项目将是矩形

例如:

规则: 不允许在矩形2和矩形3之间移动矩形

在这种情况下,当我需要移动其中一个时,我试图同时移动矩形2和3 。但我不能成功,只有一个人感动。

以下是一个示例

Rectangle {
    visible: true
    width: 1000; height: 1000
    ListView {
        id: root
        width: parent.width; height: parent.height

        model: DelegateModel {

            id: visualModel
            model: myModel
            model: ListModel {
                id: colorModel
                ListElement { someData }
                ...

            }

            delegate: MouseArea {

                property int visualIndex: DelegateModel.itemsIndex

                id: delegateRoot
                cursorShape: Qt.PointingHandCursor
                width: root.width; height: 100
                drag.target: icon
                drag.axis: Drag.YAxis
                drag.minimumY: 0

                Rectangle {
                  blablaData

                }

//IMPORTANT PART

                DropArea {
                    anchors { fill: parent; margins: 15 }

                    onEntered: {
                        if(drag.source.visualIndex <delegateRoot.visualIndex ) { //Only when my item is going down, I didn't implement the "up move"
                            if(drag.source.visualIndex==2) {
                                visualModel.items.move(drag.source.visualIndex, delegateRoot.visualIndex,2) //This is where I try to move two items at the same time, not working
                            }
                            else if(drag.source.visualIndex==3) {
                            //Do nothing, already moved when it was rectangle 2
                            }
                            else {
                               visualModel.items.move(drag.source.visualIndex, delegateRoot.visualIndex)
                            }
                        }
                    }
               }
          }
    }
}

你知道我做错了什么吗?

非常感谢!

0 个答案:

没有答案