注意
1.插件式調用的話不需要事先在主視窗裡定義子視窗。
2.插件式調用的話會存在重複調用子視窗方法,如果僅希望出現一個子視窗請不要使用此方法。
Main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
id : mainWindow //必須定義主視窗Id
visible: true
width: 640
height: 480
title: qsTr("Hello World")
property variant win //必須定義一個變量
Rectangle {
width: 320; height: 240
color: "black"
Text {
id: txt
text: "打開另一個視窗"
font.pixelSize: 20
anchors.centerIn: parent
}
MouseArea {
id: mouse_area
anchors.fill: parent // 有效區域
onClicked: {
var c = Qt.createComponent("Qml1.qml")
win = c.createObject(mainWindow)
win.show()
}
}
}
}
Qml1.qml
import QtQuick 2.0
import QtQuick.Window 2.2
Window {
width: 320; height: 240
visible: false
color: "lightblue"
Text {
id: txt
text: "另一個視窗"
font.pixelSize: 20
anchors.centerIn: parent
}
}
python顯示視窗
from PyQt5.QtQuick import QQuickView
from PyQt5 import QtGui, QtWidgets, QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5 import QtQml,QtQuick
import sys
app = QtWidgets.QApplication(sys.argv)
engine = QtQml.QQmlApplicationEngine(QUrl('main.qml')) # 顯示window界面
sys.exit(app.exec_())