Comment créer une nouvelle fenêtre À partir de QML?
y a-t-il un moyen de créer une instance de fenêtre complètement nouvelle, comme une fenêtre enfant de la fenêtre principale QML dans une application 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);
}
}
je suis en train d'essayer d'éviter d'écrire un Q_OBJECT
classe juste pour instanciating la nouvelle fenêtre, dans un nouveau QmlApplicationViewer
.
12
demandé sur
opatut
2011-11-30 18:56:19
2 réponses
il n'y a aucun moyen de créer des fenêtres de haut niveau en utilisant seulement la fonctionnalité QML intégrée.
cependant il y a un projet sur Qt Labs appelé Composants De Bureau, qui contient un composante fenêtre, qui vous permet de créer de nouvelles fenêtres de niveau supérieur.
1
répondu
sepp2k
2011-11-30 15:18:47
Vous pouvez le faire en utilisant Qt.createComponent. Exemple (en utilisant 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()
}
}
}
Enfant.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.")
}
}
25
répondu
Kknd
2014-06-25 12:24:34