Qt 如何在QML中使用MenuBar.insertMenu方法?
我正在尝试在QML中创建一个动态菜单,代码如下:Qt 如何在QML中使用MenuBar.insertMenu方法?,qt,qml,Qt,Qml,我正在尝试在QML中创建一个动态菜单,代码如下: import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 ApplicationWindow { id: root visible: true width: 640 height: 480 title: qsTr("Hello World") menuBar: MenuBar {
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
id: root
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar: MenuBar {
Menu {
title: "FIRST"
}
Menu {
title: "SECOND"
}
Menu {
title: "THIRD"
}
}
Component {
id: myMenu
Menu {
title: "ZERO"
}
}
Component.onCompleted: {
var menu1 = myMenu.createObject(menuBar);
menuBar.insertMenu(0, menu1);
}
}
系统将提示以下错误消息:
QQuickItem::stackBefore:无法将MenuBarItem_QMLTYPE_7(0x28607824d40,父项=0x28606ee4660,几何体=122,0 58x40)堆叠在MenuBarItem_QMLTYPE_7(0x28607824d40)之前,MenuBarItem_QMLTYPE_7必须是同级
菜单的顺序是:第二,第三,第一,零。
我真的不明白。为什么?
如何设置菜单的正确顺序:零、一、二、三
谢谢大家! 我想说,使用菜单项的可见性要容易得多
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
id: root
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar: MenuBar {
Menu {
id: menu_zero
title: "ZERO"
visible: false
//or
visible: condition_met
}
Menu {
title: "FIRST"
}
Menu {
title: "SECOND"
}
Menu {
title: "THIRD"
}
}
Component.onCompleted: {
if(condition_met)
menu_zero.visible = true
}
}
我想说的是,利用菜单项的可见性要容易得多
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
id: root
visible: true
width: 640
height: 480
title: qsTr("Hello World")
menuBar: MenuBar {
Menu {
id: menu_zero
title: "ZERO"
visible: false
//or
visible: condition_met
}
Menu {
title: "FIRST"
}
Menu {
title: "SECOND"
}
Menu {
title: "THIRD"
}
}
Component.onCompleted: {
if(condition_met)
menu_zero.visible = true
}
}