使用 QtQuick 2.9 在按钮单击时检索使用的修饰符

Retrieving the used modifiers on button click with QtQuick 2.9

我有一个在 QtQuick 2.9 上运行的纯 QML 应用程序。

我正在尝试检索鼠标单击期间使用的键盘修饰符。

从 QtQuick 2.15 开始,我可以这样写:

Button {
    text: "button"
    onClicked: {
        if ((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier)) {
            doSomething();
    } else {
            doSomethingElse();
        }
    }
}

但是 MouseEvent 在 QtQuick 2.9 中不可用。

还有什么选择?

Button 的 clicked 信号不提供 MouseEvent(无论您使用的是哪个版本的 Qt)。单击信号也可以通过键盘生成,因此提供 MouseEvent 没有意义。您将需要创建一个 MouseArea 并自己处理事件以执行您想要的操作。

Button {
    id: button

    MouseArea {
        id: mouse
        anchors.fill: parent

        onPressed: {
            if ((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier)) {
                doSomething();
            } else {
                doSomethingElse();
            }
        }
    }
}