Qt Quick Controls2 — 系统原生MenuBar
在使用 Quick Controls 做程序开发的时候,往往需要添加程序的MenuBar,但是MenuBar 在不同的Controls 版本中表现也是不同的。区别如下:
区别:
Qt Quick Controls 1: MenuBar是在Qt平台抽象层提供实现的平台上原生的。其他平台使用堆叠在窗口顶部的基于QML的菜单栏项目。
Qt Quick Controls 2: MenuBar是基于QML并可以完全使用QML和Qt Quick定制样式的非原生menubar。
Qt Labs Platform: MenuBar是一个实验性的原生menubar。它只能用于支持Qt平台抽象层原生实现的平台。
因此可分为 系统原生 与 非系统原生。
非系统原生:
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.5
//import Qt.labs.platform 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar:MenuBar {
Menu {
title: qsTr("&File")
MenuItem { text:"&Open..." }
MenuSeparator {}
MenuItem { text:"&Save..." }
MenuItem { text:"&Save &As..." }
MenuItem { text:"&Open..." }
}
Menu {
title: qsTr("&Edit")
MenuItem { text:"&Cut..." }
MenuItem { text:"&Copy..." }
MenuItem { text:"&Paste..." }
}
Menu {
title: qsTr("&Help")
MenuItem {
text: qsTr("&Help")
onTriggered: console.debug(qsTr("Open action triggered"))
}
MenuItem { text:"&About..." }
}
}
}
系统原生(一):
引入import Qt.labs.platform 1.0
在MenuItem中加上role字段,可设置的选项为:
MenuItem.NoRole,
MenuItem.TextHeuristicRole,
MenuItem.ApplicationSpecificRole,
MenuItem.AboutQtRole,
MenuItem.AboutRole,
MenuItem.PreferencesRole,
MenuItem.QuitRole
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 2.5
import Qt.labs.platform 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
// menuBar:
MenuBar {
Menu{
id: mainMenu
MenuItem {
id: menuAbout
role: MenuItem.AboutRole // 添加关于进入“应用程序”菜单
onTriggered: console.log("menuAbout")
}
MenuItem {
id: menuPreferences
role: MenuItem.PreferencesRole // 添加偏好设置进入“应用程序”菜单
onTriggered: console.log("menuPreferences")
}
MenuItem {
id: menuUpdate
text: paramControl.trans_QStr("Check Update")
role: MenuItem.ApplicationSpecificRole // 添加检查更新项进入“应用程序”菜单
onTriggered: console.log("menuUpdate")
}
MenuItem {
id: menuQuit
role: MenuItem.QuitRole // 添加退出进入“应用程序”菜单
onTriggered: Qt.quit()
}
}
Menu {
title: qsTr("&Edit")
MenuItem { text:"&Cut..." }
MenuItem { text:"&Copy..." }
MenuItem { text:"&Paste..." }
}
Menu {
title: qsTr("&Help")
MenuItem {
text: qsTr("&Help")
onTriggered: console.debug(qsTr("Open action triggered"))
}
MenuItem { text:"&About..." }
}
}
}
系统原生(二):
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 1.5 as OldControls
//import Qt.labs.platform 1.0
OldControls.ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar:OldControls.MenuBar {
OldControls.Menu {
title: qsTr("&File")
OldControls.MenuItem {
text: qsTr("&Open")
onTriggered: messageDialog.show(qsTr("Open action triggered"))
}
OldControls.MenuItem {
text: "about.*"
onTriggered: console.debug("FDF")
}
OldControls.MenuItem {
text: qsTr("E&xit")
onTriggered: Qt.quit()
}
}
OldControls.Menu {
title: qsTr("&Help")
OldControls.MenuItem {
text: qsTr("&Help")
onTriggered: messageDialog.show(qsTr("Open action triggered"))
}
OldControls.MenuItem {
text: qsTr("&About")
onTriggered: Qt.quit()
}
}
}
}