【发布时间】:2016-12-02 21:57:07
【问题描述】:
我正在尝试在 QML 中实现基本的拖放。从功能上讲,它可以工作——我可以拖动一根绳子。但是,我无法让可拖动的 Rectangle 对象跟随光标。它将矩形的 x 和 y 正确设置为可见的框架,但随后它保持静止而不是随鼠标移动。这是我的代码:
MouseArea {
id: mouseArea
anchors.fill: parent
drag.target: draggable
}
Rectangle {
id: draggable
height: 18
width: dragText.width + 8
clip: true
color: "#ff333333"
border.width: 2
border.color: "#ffaaaaaa"
visible: false
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
Drag.active: mouseArea.drag.active
Drag.hotSpot.x: 0
Drag.hotSpot.y: 0
Drag.mimeData: { "text/plain": "Teststring" }
Drag.dragType: Drag.Automatic
Drag.onDragStarted: {
visible = true
}
Drag.onDragFinished: {
visible = false
}
Text {
id: dragText
x: 4
text: "Teststring"
font.weight: Font.Bold
color: "#ffffffff"
horizontalAlignment: Text.AlignHCenter
}
}
【问题讨论】:
-
你要在这里做什么?您是否尝试使用
visible: false拖动项目? -
不,我将项目设置为在拖动开始后立即可见(请参阅 Drag.onDragStarted)。
-
拖动隐形物品有什么意义?你的目标是什么?也许这可以通过另一种方式来完成。
-
可见性并不重要。如果我将对象设置为可见,它仍然不能正确拖动。在你开始拖动之前,我只是隐藏了拖动对象。
标签: drag-and-drop qml draggable qtquick2