And*_*sev 2 qt qml qt5 qtquick2
我有一些菜单,该菜单包含子菜单。在某些情况下,该子菜单应该是可见的。在其他情况下,该子菜单应该是不可见的。这个怎么做?
我尝试使用visible属性,但它不起作用。子菜单始终可见。在下面的代码示例中,如果单击鼠标左键,子菜单应该可见,如果单击鼠标右键,子菜单应该不可见。但这在两种情况下都是可见的。
import QtQuick 2.13
import QtQuick.Window 2.13
import QtQuick.Controls 2.13
Window {
visible: true
width: 640
height: 480
property bool visibleSubMenu : false
Menu {
id: contextMenu
MenuItem {
text: "Menu item"
}
Menu {
title: "Sub menu"
visible: visibleSubMenu
MenuItem {
text: "Sub menu item"
}
}
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button === Qt.RightButton)
visibleSubMenu = false;
else
visibleSubMenu = true;
console.log(visibleSubMenu)
contextMenu.popup()
}
}
}
Run Code Online (Sandbox Code Playgroud)
Menu(QQuickMenu) 是保存信息的元素,但它不是可视元素,可视元素是其父级,即 MenuItem(QQuickMenuItem),因此必须隐藏父级:
property bool visibleSubMenu : true
onVisibleSubMenuChanged: sub_menu.parent.visible = visibleSubMenu
Menu {
id: contextMenu
MenuItem {
text: "Menu item"
}
Menu {
id: sub_menu
title: "Sub menu"
MenuItem {
text: "Sub menu item"
}
}
}Run Code Online (Sandbox Code Playgroud)