我的主 ApplicationWindow (root
) 中有一个按钮,可动态加载并打开在单独的 .qml
文件中声明的第二个不同的 ApplicationWindow。
Button {
id: btnLogger
text: "Logger"
onClicked: {
var component = Qt.createComponent("logger.qml")
var window = component.createObject(logRoot)
window.show()
}
}
这适用于在单击按钮时打开窗口。后续点击会创建更多新窗口。
我的意图是后续的点击应该聚焦于先前存在的窗口。如果新窗口稍后关闭,则单击该按钮应恢复为打开窗口。
即如果窗口当前不存在或存在但已关闭,则创建并打开它;否则,集中注意力。
如何在 qml
内完成此操作?或者,我目前正在从我的 C++
中的 QQmlApplicationEngine 加载应用程序,我如何使用它来实现此功能?
答案 0 :(得分:1)
我上面评论的示例代码:
Button {
id: btnLogger
text: "Logger"
property var wnd: undefined
onClicked: {
if(wnd == undefined)
{
var component = Qt.createComponent("logger.qml")
wnd = component.createObject(logRoot);
wnd.closing.connect(function() { btnLogger.wnd = undefined;});
wnd.show();
}
else
{
wnd.requestActivate();
}
}
}