Qt 如何在QML ListView中同时移动两个项目
我使用QtQuick并制作了一个能够拖放项目的QML项目 我正在尝试向拖放功能添加一条规则:您不能在两个指定项目之间拖放项目 为了解释我的问题,项目将是矩形 例如: 规则:不允许在矩形2和矩形3之间移动矩形 在本例中,当需要移动其中一个矩形时,我尝试同时移动矩形2和3。但我不能成功,只有一个人被感动了 下面是一个例子: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
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被锁定在一起?您好,如果不清楚,很抱歉。这意味着它们被锁定在一起。如果我尝试移动一个,它将同时移动两个,并且您无法在它们之间插入另一个矩形。