Как я могу создать новое окно из QML?
Вопрос
Есть ли способ создать совершенно новый экземпляр окна, как детское окно главного окна QML в QMLAPPLICATION?
// 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
.
Решение
Невозможно создать окна верхнего уровня, используя только встроенные функции QML.
Однако есть проект на QT Labs под названием Настольные компоненты, что, помимо прочего, содержит Компонент окон, что позволяет создавать новые окна верхнего уровня.
Другие советы
Вы можете сделать это, используя QT.CreateComponent. Пример (используя QT 5.3):
main.qml
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
id: root
width: 200; height: 200
visible: true
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.")
}
}
Не связан с StackOverflow