【发布时间】:2018-04-06 12:43:53
【问题描述】:
我有一个鼠标区域,它的行为应该不同,具体取决于是否按下修饰键。当没有按下修饰键时,还应该有一个默认行为。我这样测试:
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onPressed: {
console.log('Entered onPressed: ', mouse.modifiers&Qt.NoModifier)
if(mouse.modifiers & Qt.NoModifier) {
console.log('Entered If: ', mouse.modifiers&Qt.NoModifier)
}
}
当我在MouseArea 中按下鼠标按钮时,我得到以下输出:
qml: Entered onPressed: 0
但是第二行没有打印出来。问题似乎是 mouse.modifiers&Qt.NoModifier 被评估为零。相比之下,
if(mouse.modifiers & Qt.ControlModifier) {
console.log("Entered Control if: ",mouse.modifiers&Qt.ControlModifier)
}
正在工作并打印qml: Entered Control if: 67108864
mouse.modifiers&Qt.NoModifier 不应该也被评估为非零值吗?
【问题讨论】:
-
如果你看Qt标志字段是如何实现的,没有标志总是为零,每个标志值占据一个位位置,所以你可以对标志值进行AND和OR。