Qt 如何在QML ListView中同时移动两个项目

Qt 如何在QML ListView中同时移动两个项目,qt,qml,qtquick2,qt-quick,Qt,Qml,Qtquick2,Qt Quick,我使用QtQuick并制作了一个能够拖放项目的QML项目 我正在尝试向拖放功能添加一条规则:您不能在两个指定项目之间拖放项目 为了解释我的问题,项目将是矩形 例如: 规则:不允许在矩形2和矩形3之间移动矩形 在本例中,当需要移动其中一个矩形时,我尝试同时移动矩形2和3。但我不能成功,只有一个人被感动了 下面是一个例子: Rectangle { visible: true width: 1000; height: 1000 ListView { id: ro

我使用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)
                            }
                        }
                    }
               }
          }
    }
}
矩形{
可见:正确
宽度:1000;高度:1000
列表视图{
id:根
宽度:parent.width;高度:parent.height
模型:委派模型{
id:visualModel
型号:myModel
模型:ListModel{
id:colorModel
ListElement{someData}
...
}
代表:穆塞雷亚{
属性int visualIndex:DelegateModel.itemsIndex
id:delegateRoot
光标形状:Qt.PointingHandCursor
宽度:根。宽度;高度:100
drag.target:图标
drag.axis:drag.YAxis
拖动。最小值:0
长方形{
blablaData
}
//重要部分
下降区{
锚定{填充:父级;边距:15}
合一:{

如果(drag.source.visualIndex)对不起,我不理解您的措辞。“您不允许在矩形2和矩形3之间移动矩形”,但您正在尝试移动2和3?“当我需要移动其中一个时,我正在尝试同时移动矩形2和3”?是哪一个…..您需要移动两个还是其中一个?或者基本上矩形2和3被锁定在一起?您好,如果不清楚,很抱歉。这意味着它们被锁定在一起。如果我尝试移动一个,它将同时移动两个,并且您无法在它们之间插入另一个矩形。