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菜单栏中使用原生菜单等.
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).
我在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