如何在 Qt QML 中处理 mac 集成 About MenuBar 项?

Posted

技术标签:

【中文标题】如何在 Qt QML 中处理 mac 集成 About MenuBar 项?【英文标题】:How to handle the mac integrated About MenuBar item in Qt QML? 【发布时间】:2015-04-16 15:12:04 【问题描述】:

我在 Mac 下创建了一个 QML 应用程序,但我不知道单击关于菜单时会发生什么。

在http://doc.qt.io/qt-5/qmenubar.html 中,我们找到了有关OS X 上的QMenuBar 的信息。但是对应的 QML 方法是什么?

目前,我的代码是:

Menu 
    title: qsTr("&File")
    MenuItem 
        text: qsTr("&Open")
        onTriggered: messageDialog.show(qsTr("Open action triggered"))
    
    MenuItem 
        text: "about.*"
        onTriggered: console.debug("FDF")
    
    MenuItem 
        text: qsTr("E&xit")
        onTriggered: Qt.quit()
    

当我执行的时候,这个菜单只显示Open,而AboutExit都正确集成到了mac菜单中。退出没问题,但是当我点击about时,就正常退出了。

那么我们该如何处理呢?

【问题讨论】:

这很奇怪。它非常适合我。哪个版本的 OSX/Qt? @BaCaRoZzo 感谢您的确认。我使用上面的代码创建了一个新项目,它运行良好。后来我发现了问题。 【参考方案1】:

我发现了问题。我的代码是这样的,

menuBar: MenuBar 

    Menu 
        title: qsTr("&File")
        MenuItem 
            text: qsTr("&Open")
            onTriggered: messageDialog.show(qsTr("Open action triggered"))
        

        MenuItem 
            text: "about.*"
            onTriggered: console.debug("FDF")
        

        MenuItem 
            text: qsTr("E&xit")
            onTriggered: Qt.quit()
        
    

    Menu 
        title: qsTr("&Help")
        MenuItem 
            text: qsTr("&Help")
            onTriggered: messageDialog.show(qsTr("Open action triggered"))
        
        MenuItem 
            text: qsTr("&About")
            onTriggered: Qt.quit()
        
    

about 菜单项有两个,后者覆盖了前一个。

【讨论】:

我明白了。很高兴听到您发现了问题。 :)【参考方案2】:
menuBar: MenuBar 

    Menu 
        title: qsTr("&File") // Name

        MenuItem 
            text: qsTr("&Open") // Name
            onTriggered: messageDialog.show(qsTr("Open action triggered")) // Action on Triggered
        

        MenuItem 
            ...
        
    

【讨论】:

以上是关于如何在 Qt QML 中处理 mac 集成 About MenuBar 项?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Switch Qml 添加到 qt 小部件?

如何拦截 Qt Quick qml 事件?

在 QML/Qt 中模糊部分背景图像

如何在Qt C++中解析JSON数据并使之被QML应用 / 蓝讯

QT Quick (QML) assemble mac-.bundle -> 使用 macdeployqt 时不是动态库错误

Qt5-QML:在第三方设备上自动验证用户名和密码