QtQuick Controls中的菜单栏2

Sas*_*san 10 qt qml qtquick2 qtquickcontrols2

如何在QtQuick Controls 2中安装菜单栏?它曾经是这样的(在ApplicationWindow中):

menuBar: MenuBar {
    Menu {
        title: qsTr('File')
        MenuItem {
            text: qsTr('&Test')
            onTriggered: console.log('test')
        }
        MenuItem {
            text: qsTr('&Exit')
            onTriggered: Qt.quit();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但升级到Qt 5.7后,它会出现此错误: Invalid property name "menuBar".(M16)

PS它曾经使用设备的本机菜单系统,例如在OS X上它使用原生屏幕的topbar菜单栏,在Linux和Windows上它在应用程序topbar菜单栏中使用原生菜单等.

Mit*_*tch 7

MenuBar现在可用,并在Qt 5.10中添加.使用QtQuick.Controls 2.3或更高版本:

import QtQuick.Controls 2.3
Run Code Online (Sandbox Code Playgroud)

老答案:

正如GrecKo所说,桌面不是模块的重点,因此,您不会MenuBar在主要导入中找到控件.直到最近,我一直在使用RowLayout包含一堆ToolButton控件的控件,每个控件都打开一个控件,Menu以便模拟桌面应用程序的菜单栏.

但是,最近添加了该Qt.labs.platform模块,它增加了对本机控件的支持.此模块中的类型完全是原生的,但代价是可定制性较差.如果克隆dev分支,则可以开始使用这些.MenuBarqtquickcontrols2.git

顺便说一句,如果您不确定什么Qt Quick的同等类型控制2,有一个"类型比较表" 在这里(虽然它很遗憾目前错失 MenuBar).


Sas*_*san 6

我在Qt博客上问了同样的问题,宣布发布Qt 5.7,这是他们的回答:http://blog.qt.io/blog/2016/06/16/qt-5-7-released/#comment-1197915

所以我们应该等待Qt 5.8或克隆回购,因为米奇在他的回答中建议.

更新

Tihs现在在Qt Quick Controls 2中实现:https://doc.qt.io/qt-5.10/qml-qtquick-controls2-menubar.html