【发布时间】:2020-03-20 04:58:17
【问题描述】:
我有一个复杂的对话框,其中包含许多复杂布局中的控件。我需要添加一个光标标记:在此对话框上方绘制的垂直线,应该跟随鼠标光标。 我不明白如何实现这一点。 简化示例代码:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
Window {
visible: true
width: 640
height: 480
Button {
anchors.centerIn: parent
width: 100
height: 50
text: "Button"
highlighted: hovered
}
Rectangle {
id: cursorMarker
width: 1
color: "black"
anchors.top: parent.top
anchors.bottom: parent.bottom
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onPositionChanged: {
cursorMarker.x = mouse.x
}
}
}
在此示例中,MouseArea 位于按钮上方并拦截所有鼠标消息。因此,当鼠标光标移到按钮上方时,按钮不会突出显示。如果将 MouseArea 放置在按钮下方,则当鼠标移到按钮上时光标标记未正确定位。 但我需要两者:光标标记正确定位在整个对话框上方,并且按钮正常工作。 如何解决这个问题?
【问题讨论】:
-
Reading propagateComposedEvents 我认为这是不可能的,因为传播只针对 clicked、doubleClicked 和 pressAndHold 事件进行
-
也许有另一种方法可以实现此功能,无需事件传播。
-
可能你可以通过将
cursorShape设置为带有垂直线的普通鼠标指针来到达某个地方