Wie kann ich ein neues Fenster innerhalb von QML erstellen?
Frage
Gibt es eine Möglichkeit, eine völlig neue Fensterinstanz als untergeordnetes Fenster des Haupt -QML -Fensters in einer QMLApplication zu erstellen?
// 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);
}
}
Ich versuche es zu vermeiden, a zu schreiben Q_OBJECT
Klasse nur zum Instanz des neuen Fensters innerhalb eines neuen QmlApplicationViewer
.
Lösung
Es gibt keine Möglichkeit, mit nur eingebauten QML-Funktionen auf oberste Fenster zu erstellen.
Es gibt jedoch ein Projekt in QT Labs aufgerufen Desktop -Komponenten, was unter anderem a enthält a Fensterkomponente, Sie können neue Fenster auf oberster Ebene erstellen.
Andere Tipps
Sie können es tun, indem Sie Qt.CreateComponent verwenden. Beispiel (mit 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.")
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow