gpt4 book ai didi

qt - QML中ApplicationWindow的MenuBar动态添加Menu

转载 作者:行者123 更新时间:2023-12-04 13:14:04 24 4
gpt4 key购买 nike

我正在尝试创建一个可通过插件扩展的应用程序。现在插件应该能够在菜单栏中动态添加菜单。

从文档中我可以找到 QtLabsPlatform 提供的 MenuBar。这有一个方法 addMenu。但 Windows 不在支持的平台列表中。所以我不能从中受益。

我尝试了 Error adding a Menu in QML 中建议的占位符技术,但这不适用于 QtQuick.Controls 2.13

最佳答案

the @timday answer在您指出的问题中表示答案但未显示示例:

... Dynamic creation of Menus is a little harder; see Qt.createQmlObject or Qt.createComponent docs. (It may be simpler to just declare all the ones you need in your code, but with their visible property wired to whatever logic is appropriate). ...



(强调我的)

所以我的回答只是向您展示如何做到这一点,尽管我认为您想动态地将 MenuItem 添加到菜单中,而不是将菜单添加到 MenuBar:
import QtQuick 2.13
import QtQuick.Controls 2.13


ApplicationWindow {
id: root
width: 640
height: 480
visible: true
menuBar: MenuBar {
Menu {
id: plugins_menu
title: qsTr("&Plugins")
}
}
function onTriggered(item){
console.log(item.text)
}
Component.onCompleted:{
var plugin_names = ["plugin1", "plugin2", "plugin3"]
for(var i in plugin_names){
var item = Qt.createQmlObject('import QtQuick 2.13; import QtQuick.Controls 2.13; MenuItem {}',
plugins_menu)
item.text = plugin_names[i]
plugins_menu.addItem(item)
var f = function(it){
it.triggered.connect(function (){ root.onTriggered(it)
})}
f(item)
}
}
}

关于qt - QML中ApplicationWindow的MenuBar动态添加Menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58197595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com