QML 打開新窗口


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;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM