有没有办法创建一个全新的窗口实例,作为QmlApplication中主QML窗口的子窗口?
// ChildWindow.qml
Rectangle {
id: childWindow
width: 100
height: 100
// stuff
}
// main.qml
Rectangle {
id: window
width: 1000
height: 600
MouseArea {
anchors.fill: parent
onClicked: createAWindow(childWindow);
}
}
我正在努力避免编写Q_OBJECT
课程,只是为了在新的QmlApplicationViewer
内实现新窗口。
答案 0 :(得分:29)
您可以使用Qt.createComponent来完成。示例(使用Qt 5.3):
<强> main.qml 强>
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
id: root
width: 200; height: 200
Button {
anchors.centerIn: parent
text: qsTr("Click me")
onClicked: {
var component = Qt.createComponent("Child.qml")
var window = component.createObject(root)
window.show()
}
}
}
<强> Child.qml 强>
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
id: root
width: 100; height: 100
Text {
anchors.centerIn: parent
text: qsTr("Hello World.")
}
}
答案 1 :(得分:1)
无法仅使用内置QML功能创建顶级窗口。
然而,Qt Labs上有一个名为Desktop Components的项目,其中包含一个Window component,允许您创建新的顶级窗口。