Qt QML无法在菜单中创建子菜单
我正在尝试创建一个菜单Qt QML无法在菜单中创建子菜单,qt,qml,qtquick2,qtquickcontrols2,Qt,Qml,Qtquick2,Qtquickcontrols2,我正在尝试创建一个菜单 import QtQuick 2.0 import QtQuick.Controls 2.2 ... Menu { id: menu title: "mainMenu" MenuItem { text: "menuItem1" } MenuItem { text: "menuItem2" } Menu { title: "cont
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
中-您使用的版本-菜单
继承自弹出窗口
,因此其行为类似-这意味着默认情况下,它们是关闭的,您需要将它们设置为可见
或打开()
另一方面,MenuItem
是预配置的AbstractButton
s,单击时关闭弹出窗口。如果您想使用QtQuick.Controls 2.x
-style菜单
,您可以定义自己的子类型子菜单
,它是一个按钮,不关闭父菜单弹出窗口
,而是根据需要打开第二个菜单,或者在单击(手风琴式)时插入右菜单项
正确的实现取决于您的需求,但不应太具挑战性。如果您在这方面需要更多帮助,请随时询问。也许您可以使用Button而不是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();
}
}
}
}
添加对和的支持。您使用的是哪个Qt版本?我的Qt版本是5.9.2可能是某个特定的WM?基于Wayland、帧缓冲区或类似的东西?PS。您已经可以试用Qt 5.10 beta1,它可以方便地在在线安装程序中获得。不过,请注意,由于Qt Quick core中正在进行一些与触摸和鼠标输入处理相关的工作,第一个测试版在这方面存在一些问题。在Qt Quick Controls 2中,弹出窗口受到影响,在单击或点击外部时,弹出窗口并不总是如预期的那样关闭。这些问题已在即将发布的Qt 5.10 beta2中修复。