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.

War es hilfreich?

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
scroll top