QML不能在菜单
创建子菜单我试图创建一个菜单QML不能在菜单
import QtQuick 2.0
import QtQuick.Controls 2.2
...
Menu {
id: menu
title: "mainMenu"
MenuItem {
text: "menuItem1"
}
MenuItem {
text: "menuItem2"
}
Menu {
title: "contextMenu"
MenuItem {
text: "item1"
}
MenuItem {
text: "item2"
}
}
}
但是,当我试图menu.open()
没有contextMenu
请在下面找到截图。
我该如何解决这个问题?
也许你打算使用QtQuick.Controls 1.x
其中支持这些子菜单。
在QtQuick.Controls 2.2
- 你正在使用的版本 - 从Popup
Menu
继承,因此行为像这样的 - 这意味着,它们默认是关闭的,你需要将它们设置visible
或open()
他们。
另一方面,MenuItem
为AbstractButton
,它们已预先配置,点击时关闭Popup
。如果你想使用QtQuick.Controls 2.x
风格的Menu
你可以定义你自己的子类型SubMenu
这是一个按钮,不会关闭父Popup
,但打开第二个菜单,或点击时插入右手MenuItem
(手风琴风格) 。
正确的实施取决于您的要求,但不应该太具有挑战性。随意问,如果你需要更多的帮助。
也许你可以使用按钮,而不是菜单项,并调整按钮自己的背景,总结起来
Item {
id: root
width: 500
height: 500
MouseArea {
id: mouse
anchors.fill: parent
onClicked: {
rootMenu.open()
}
}
Menu {
id: rootMenu
title: "rootMenu"
Button {
text: "menuItem1"
onClicked: {
console.log("choose A")
rootMenu.close()
}
}
Button {
text: "menuItem2"
onClicked: {
console.log("choose B")
rootMenu.close()
}
}
Button {
id: menu_c
text: "menuItem3"
onClicked: secondMenu.open()
}
}
Menu {
id: secondMenu
x: rootMenu.width
y: menu_c.y
MenuItem {
text: "item1"
onTriggered: {
console.log("item1")
rootMenu.close();
}
}
MenuItem {
text: "item2"
onTriggered: {
console.log("item2")
rootMenu.close();
}
}
}
}
PS。您可以试用Qt 5.10 beta1,它可以在线安装程序方便地使用。但请注意,由于Qt Quick核心中正在进行的一些触摸和鼠标输入处理相关工作,因此已知第一个测试版本在此领域存在一些问题。在Qt Quick Controls 2中,弹出窗口受到影响的方式是,他们在点击或敲击外部时并不总是按照预期关闭。这些问题已经在即将到来的Qt 5.10 beta2中得到修复。 – jpnurmi
你正在使用哪个Qt版本? – Mitch
我的qt版本是5.9.2 –
也许是一些特定的WM?基于Wayland的帧缓冲或类似的东西? – folibis