QML MouseArea - 检查Qt.NoModifier

时间:2018-04-06 12:43:54

标签: qt qml qtquick2

我有一个鼠标区域,根据是否按下了修改键,它的行为应该不同。当没有按下修改键时,也应该有默认行为。我这样测试:

        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评估为非零值吗?

1 个答案:

答案 0 :(得分:0)

所以似乎Qt.NoModifer为零,因此mouse.modifiers& Qt.NoModifier为零。因此检查

 if(!mouse.modifiers)

应该是解决方案