【问题标题】:QML - event.modifiers doesn't work when using Menu QML typeQML - 使用菜单 QML 类型时 event.modifiers 不起作用
【发布时间】:2016-02-10 06:38:57
【问题描述】:

在 QML 中,当我使用 Menu QML 类型时,event.modifiers 在 Keys.onPressed 中不起作用,但在注释 Menu 类型后它起作用了。我究竟做错了什么?是否有与 Menu QML 类型相关的错误? 我正在使用 Qt 5.4.0。

Rectangle {
id: main
width: 600
height: 300

Menu {
    id: menu
    title: "Edit";

    MenuItem { text: "Copy";shortcut: "Ctrl+C" }
    MenuItem { text: "Paste";shortcut: "Ctrl+V" }
    MenuItem { text: "Select" }
    MenuItem { text: "Select all";shortcut: "Ctrl+A" }

    MenuSeparator { }
    MenuItem { text: "Delete";shortcut: "Delete" }
    MenuItem { text: "Delete all" }

    MenuSeparator { }
    MenuItem { text: "Auto arrange" }

    }

Keys.onPressed: {
    if((event.key === Qt.Key_C) && (event.modifiers & Qt.ControlModifier))
    {
        console.log("Ctrl+C is pressed")
    }
}

MouseArea{
    anchors.fill : parent;
    acceptedButtons: Qt.LeftButton | Qt.RightButton

    onClicked: {
        main.focus = true;
        if(mouse.button === Qt.RightButton){
            menu.popup();
        }
    }
}
}

【问题讨论】:

    标签: qt events qml


    【解决方案1】:

    Menu 不是 visual primitive (QQuickItem),因此不接收事件:

    所有视觉原语都支持通过 Keys 附加属性进行键处理。

    您当前使用的shortcut 属性是提供菜单快捷方式的正确方法。您也可以分配action

    要响应触发的快捷方式,请使用triggered 信号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 2018-08-25
      相关资源
      最近更新 更多