main.qml
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 import QtQuick.Layouts 1.12 ApplicationWindow { id:root visible: true width: 1920 height: 1080 title: qsTr("Simulink") flags: "Window"; Loader{ id:loader } menuBar: MenuBar{ width: parent.width height: 20; } ToolBar{ RowLayout{ anchors.fill: parent ToolButton{ id:toolBtn width: 60 height: 20 text: "Library"; onClicked: { var component = Qt.createComponent("LibraryWindow.qml") var window = component.createObject(root) window.show() //loader.sourceComponent = sub; } } ToolButton{ id:setBtn width: 60 height: 20 text: "Set"; onClicked: { var component = Qt.createComponent("SetWindow.qml") var window = component.createObject(root) window.show() } } } } Component{ id:sub Window{ id:win title: "子窗口" width: 400 height: 400 visible: true MouseArea{ anchors.fill: parent onClicked: close(); } Connections{ target: win onClosing://子窗口關閉的時候卸載 { loader.sourceComponent = undefined; } } } } }
LibraryWindow.qml
import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 ApplicationWindow { id: librarywindow width: 1280; height: 720; title:"LibraryWindow"; }
SetWindow.qml
import QtQuick 2.0 import QtQuick.Window 2.12 import QtQuick.Controls 2.5 ApplicationWindow { height: 640; width: 480; title: "Settings" }
除此之外,還可以用Loader來創建
import QtQuick 2.0 import QtQuick.Window 2.0 Window { id:main visible: true width: 600 height: 600 title: qsTr("父窗口") Loader{ id:loader } Component{ id:sub Window{ id:win title: "子窗口" width: 400 height: 400 visible: true MouseArea{ anchors.fill: parent onClicked: close(); } Connections{ target: win onClosing://子窗口關閉的時候卸載 { loader.sourceComponent = undefined; } } } } MouseArea{ anchors.fill:parent onClicked: { loader.sourceComponent = sub; } } }