根元素
QML用户界面分解成一块块小的元素,每一元素都由很多组件构成。
根元素有很多,最广泛的是Item,也有Rectangle和window。
如果定义的是window ,那么qml文件必须要import QtQuick.Window ,否则会闪退。
Window根元素python调用
QML文件,命名为Qml1.qml。
由于定义的根元素的window,所以需要import import QtQuick.Window
注意:QML的文件命名第一个字母必须要大写。
import QtQuick 2.0
import QtQuick.Window 2.2
Window {
visible : true //此属性必须要定义,否则窗口不显示
width: 320; height: 240
// visible: true
color: "lightblue"
Text {
id: txt
text: "Clicked me"
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('Qml1.qml')) # 显示window界面
sys.exit(app.exec_())
运行结果
Rectangle或其他根元素调用
QML文件,同样命名为Qml1.qml,但是根元素改为Rectangle
不是window根元素则可以不用import QtQuick.Window
import QtQuick 2.0
// import QtQuick.Window 2.2
Rectangle {
// visible : false
width: 320; height: 240
visible: true
color: "lightblue"
Text {
id: txt
text: "Clicked me"
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 = QGuiApplication([])
path = 'Qml1.qml' # 加载的QML文件
view = QQuickView()
view.setTitle('Qml') # 设置窗口名称
view.engine().quit.connect(app.quit)
view.setSource(QUrl(path))
view.show() # 显示quick界面
sys.exit(app.exec_())
运行结果
由于是quick view,当你拉大窗口时,其他地方由于没有定义则会显示空白,而application得则会按比例放大。