【问题标题】:How do I get Qt Labs Qml Menubar working properly如何让 Qt Labs Qml 菜单栏正常工作
【发布时间】:2020-11-11 17:00:06
【问题描述】:

我已按照我能找到的所有说明进行操作,包括:

在 main.cpp 中使用“QApplication”而不是“QGuiApplication”

.pro 文件中的“QT += 小部件” (作为旁注,无论我是否执行上述操作,我都会得到相同的结果 - 因为我在 macOS 上)

main.qml 中的“import Qt.labs.platform 1.1 as Labs”

这是我的 main.qml 中的代码

Window {
id: window
visible: true
visibility: "Maximized"
width: 900
minimumWidth: 900
height: 700
minimumHeight: 700
title: qsTr("Crop Face")


Labs.MenuBar {
    id: menuBar


    Labs.Menu {
        id: editMenu
        title: qsTr("&Hi")
        // ...
    }

    Labs.Menu {
        id: viewMenu
        title: qsTr("&View")
        // ...
    }

    Labs.Menu {
        id: helpMenu
        title: qsTr("&Help")
        // ...
    }
}

我得到了这个结果:

和:

“表情符号和符号”到底是从哪里来的!?文件、查看和帮助菜单项发生了什么? 我有商业许可证并且在 MacOS Mojave 上使用 Qt 5.13。 有趣的是,如果我将 title: qsTr("&Edit") 更改为 title: qsTr("&Hi"),我没有得到 Hi 菜单。 是我做错了什么还是实验室菜单栏和菜单根本不起作用。 如果它们不起作用,我该如何创建标准的 Mac 原生平台菜单栏?

谢谢 杰夫

【问题讨论】:

  • 在我看来,您需要有条目才能显示菜单。 “表情符号和符号”似乎是一个自动添加到“编辑”菜单的 mac 东西
  • @deW1 - 你是对的。我在下面的答案中包含了我的新代码。

标签: qt qml menubar


【解决方案1】:

正如 deW1 在上面的 cmets 中指出的那样,Menu 中至少需要一个 menuItem 才能显示菜单。因为“表情符号和符号”是由 Mac 自动添加到编辑中的,所以编辑菜单确实会显示,但其他菜单都没有。我在下面添加了我的新代码,效果很好。另请注意,因为“关于”菜单项通常显示在应用程序菜单下,也就是它所在的位置,并且因为这是文件菜单中唯一的菜单项,所以文件菜单不需要显示。 (应该是这样 - 代码后看图片。)

ApplicationWindow {
id: window
visible: true
visibility: "Maximized"
width: 900
minimumWidth: 900
height: 700
minimumHeight: 700
title: qsTr("Crop Face")


Labs.MenuBar {
    id: menuBar

    Labs.Menu {
        id: fileMenu
        title: qsTr("File")

        Labs.MenuItem {
            text: qsTr("&About")
           // onTriggered: Qt.quit()
        }
    }

    Labs.Menu {
        id: windowMenu
        title: qsTr("&Window")

        Labs.MenuItem {
            text: qsTr("&Minimize")
            //onTriggered: messageDialog.show(qsTr("Open action triggered"))
        }
        Labs.MenuSeparator{}
        Labs.MenuItem {
            text: qsTr("Scroll Up")
            //onTriggered: messageDialog.show(qsTr("Open action triggered"))
        }
        Labs.MenuItem {
            text: qsTr("Scroll Down")
            //onTriggered: messageDialog.show(qsTr("Open action triggered"))
        }
    }



    Labs.Menu {
        id: helpMenu
        title: qsTr("&Help")
        Labs.MenuItem {
            text: qsTr("&View Website")
            //onTriggered: messageDialog.show(qsTr("Open action triggered"))
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多