在Qt中区分Ctrl + Click和右键单击

时间:2018-09-19 15:30:39

标签: macos qt qml

我目前在QML中通过MouseArea收到鼠标事件。我可以区分鼠标左键,鼠标右键和鼠标中键。在Mac上,按住Control和Left Clicking会被解释为Qt.RightButton按下。无论如何,要区分标准的右键单击和(Ctrl +左)右键单击?我需要执行此操作以处理自定义UI交互(我知道这是一种反模式)。

注意:特别是,我需要区分Ctrl +左击和Ctrl +右击。结果,仅检测接收到右键单击事件时是否按下了Control还是不够的。

function button( mouse )
    {
        if( mouse.button == Qt.LeftButton )
        {
            console.log("left button is pressed");
            return 0;
        } else if( mouse.button == Qt.MidButton )
        {
            console.log("mid button");
            return 1;
        } else if ( mouse.button == Qt.RightButton )
        {
            console.log("right button pressed");
        }
 }

1 个答案:

答案 0 :(得分:3)

在Mac上,按住Control键并单击鼠标左键以进行右键单击是系统设置,用户可以选择-与Qt无关,尝试检测到它会破坏您的应用程序,因为用户取决于Ctrl + Left在任何地方都充当Right,并且您有0个理由来更改它-就像有零个理由阻止用户例如全局交换左右按钮(对于您的应用程序是独立的和未知的),等等。

您需要的思维方式是Ctrl + Left在默认的Mac系统上不可用,实际上:为什么会这样?如果跨平台应用程序在Windows上使用Ctrl + Left / Right,我完全希望它在Mac上使用Cmd + Left / Right,并且如果做其他事情会很困惑。 Windows / Unix上的Ctrl在Mac上变成了Cmd-这是每个人都期望的,这就是Mac上基本上所有东西工作的方式。那就是您想要的-然后没有问题。