从普通QML窗口类生成QtQuick UI文件
如何从普通qml窗口显示QtQuick UI文件集UI.qml和.qml 要显示父窗口类中的其他QML窗口,调用大致如下:从普通QML窗口类生成QtQuick UI文件,qt,qml,Qt,Qml,如何从普通qml窗口显示QtQuick UI文件集UI.qml和.qml 要显示父窗口类中的其他QML窗口,调用大致如下: var component = Qt.createComponent("SubWindow.qml") var window = component.createObject(window) window.show() 我尝试调用QtQuickUISubwindow.ui
var component = Qt.createComponent("SubWindow.qml")
var window = component.createObject(window)
window.show()
我尝试调用QtQuickUISubwindow.ui.qml和QtQuickUISubwindow.qml,但两者都不起作用
QtQuickUI文件不是子窗口吗?窗口和应用程序窗口不是Item或QQuickItem类型。但是,这是作为根项放置在.ui.qml文件中的要求,如下所示:
不支持以下功能:
[...]
不是从QQuickItem或Item派生的根项
所以答案是:
不,您既不能将QtQuickUI文件用作窗口也不能用作子窗口
但是,您可以在子窗口中轻松地使用它们
//main.qml
Window {
id: root
width: 800
height: 600
visible: true
Loader { // creates my sub window without JS
id: winLoader
active: false // Change to create the window.
sourceComponent: Window {
width: srcLoader.item ? srcLoader.item.width : 0
height: srcLoader.item ? srcLoader.item.height : 0
visible: srcLoader.item
Loader {
id: srcLoader
source: "QtQuickUISubwindow.ui.qml" // Your ui.qml-file *here*
active: true
}
onClosing: winLoader.active = false
}
}
Button {
text: "Show sub window!"
onClicked: winLoader.active = true
}
}
我还没有测试过这段代码。也许我以后会这样做,一旦我有机会访问Qt机器。如何使用中继器和ListModel初始化多个窗口,您可以在此处找到:
如果要打开多个不同的窗口,可以将srcLoader的源代码传递给模型,并从那里读取它
您可以修改QtQuickUISubwindow.qml文件,并添加适当大小的窗口或应用程序窗口作为根元素。然后,您可以像以前一样使用JS创建所有内容,并希望垃圾收集器能够很好地发挥作用。1。既然可以用QML创建windows,为什么还要用JS创建windows呢。2.否,QtQuickUI文件不能将Window或ApplicationWindow作为根元素。尝试手动将.ui.qml-file的根元素更改为Window,并在设计器中打开它以查看。另请参见:不支持以下功能:[……]不是从QQuickItem派生的根项目或项目[…]我尝试使用qml代码,但无法使其正常工作,文档规范确实是正确的答案,我感谢您指出这一点。我忘记了让根窗口可见,并且我对ui.qml文件有了另一个名称。现在,我还添加了一个按钮,以激活加载程序。