无法通过快捷方式访问 QML 中的菜单项

Posted

技术标签:

【中文标题】无法通过快捷方式访问 QML 中的菜单项【英文标题】:Unable to access menu item in QML through shortcuts 【发布时间】:2021-01-03 11:28:29 【问题描述】:

这是 QtQuick.Controls.12.2 的代码。它显示正确,但是当我按下 Ctrl 时没有任何反应。

我希望打印语句能够执行。我在这里做错了什么?

    Menu
    
        title: qsTr("File")

        MenuItem
        
            id: new_
            text: "qqq"

            onTriggered:
            
                console.log("saasd")
            

            action:
                 Action
                 
                     shortcut: "Ctrl"
                     onTriggered: console.log("sad0asd")

                 

            contentItem:
                    Row
                    
                        spacing: 70
                        Text
                        
                            text: new_.text
                            font: menuItem.font
                            opacity: enabled ? 1.0 : 0.3
                            color: menuItem.highlighted ? "#ffffff" : "#21be2b"
                        

                        Row
                        
                            spacing: 5
                            Rectangle
                            
                                color: "blue"; height: decoration.getHeight(15); width: height
                            

                            Text
                            
                                text: "Ctrl"
                                font: menuItem.font
                                opacity: enabled ? 1.0 : 0.3
                                color: new_.highlighted ? "#ffffff" : "#21be2b"
                             
                        
                    
        
     

【问题讨论】:

【参考方案1】:

确实,似乎无法使用单个修饰符 (Ctrl/Shift/...) 作为快捷方式值。

(See this similar question)

有效:

shortcut: "Ctrl+K" // modifier + key
shortcut: "K" // unique key

不会工作:

shortcut: "Ctrl"
shortcut: "Shift"
...

一种可能的解决方法是在菜单外捕捉按键:

Item 
    //...
    
    focus: true
    Keys.onPressed: 
        if (event.key === Qt.Key_Control) 
           console.log("sad0asd")
        
    


    Menu 
        // ...
       

【讨论】:

你很有帮助。谢谢。

以上是关于无法通过快捷方式访问 QML 中的菜单项的主要内容,如果未能解决你的问题,请参考以下文章

JavaFX 菜单项在右侧显示快捷方式

电脑装软件无法创建快捷方式,开始菜单里也只有文件夹没有软件

怎样向开始菜单添加快捷命令 电脑怎么创建运行快捷方式到开始菜单

用户为页面中的菜单定义的 Windows 快捷方式

Tinymce-如何让用户知道快捷方式

电脑上为啥会出现此快捷方式引用的项目无法访问,您可能没有适当的权限?