Как создать новое окно из 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
.
2 ответов
невозможно создать окна верхнего уровня, используя только встроенные функции 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
Button {
anchors.centerIn: parent
text: qsTr("Click me")
onClicked: {
var component = Qt.createComponent("Child.qml")
var window = component.createObject(root)
window.show()
}
}
}
ребенок.в 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.")
}
}