QT文档有tutorial。
我最初完全遵循它,它的确有效。然后我做了两处修改:
我用一个GridView替换了ListView(在没有#2的情况下工作)。
我尝试在Rectangle" content"中添加一个ToolButton给我的委托。像这样:
Rectangle {
id: content
ToolButton {
id: toolButton
icon.color = "transparent"
icon.source = "image://Loader/iconName"
}
Drag.active: dragArea.held
Drag.source: dragArea
Drag.hotSpot.x: width / 2
Drag.hotSpot.y: height / 2
}
这不起作用,ToolButton似乎正在处理鼠标移动而不传播消息(我可以单击按钮,但我无法拖动它)?这实际上有点预期是诚实的。
所以说,有没有人有一个很好的方法来拖动ToolButtons?或者只是接受你不能这样做?我尝试了各种Rectangles和MouseAreas的组合,但我似乎不会打破另一个(即拖动失败或按钮失败)。
答案 0 :(得分:0)
您可以移动MouseArea
作为ToolButton
的孩子来管理pressAndHold
的拖动,并传播点击以保持按钮行为:
Rectangle {
id: content
ToolButton {
id: toolButton
// bind the visual state of the button to the MouseArea
background: Rectangle {
color: marea.pressed
? Qt.darker("blue")
: marea.containsMouse
? Qt.lighter("blue")
: "blue" // use your desired colors
}
MouseArea {
id: marea
property bool held: false
drag.target: held ? content : undefined
drag.axis: Drag.YAxis
anchors.fill: parent
hoverEnabled: true
onPressAndHold: held = true
onReleased: held = false
onClicked: toolButton.clicked() // propagate clicked event to the ToolButton
}
}
// ...
}