在QtQuick中,APP具有两种启动模式:
一是前面用过的QQuickView + Item;
二是QQmlApplicationEngine + Window。
相对于QQuickView ,QQmlApplicationEngine加载以Window为根对象的QML文档,QML文档则拥有窗口的完整控制权,可以直接设置标题、窗口尺寸等属性。
更详细的介绍可以查看官方文档:
QQuickView Class
QQmlApplicationEngine Class
使用QQuickView显示QML文档,在加载元素时会自动创建窗口。
编程示例
QQmlApplicationEngine不会自动创建根窗口,只能加载具有Window或ApplicationWindow作为根组件的QML文档。
Window对象用于创建一个与操作系统相关的顶层窗口,包含了如Text, Rectangle, Image等元素。
ApplicationWindow是Window的派生类,使用它需要使用下面的语句来引入Controls模块:
import QtQuick .Controls 1.2
ApplicationWindow与QMainWindow类似,有menuBar, toolBar, statusBar属性,分别用来设置菜单、工具栏、状态栏,还有contentltem,可以用来设置内容元素的尺寸属性。
import sys
from PySide2.QtWidgets import QApplication
from PySide2.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine("qml/main.qml")
print(engine)
app.exec_()
main.qml代码如下:
import QtQuick 2.7
import QtQuick.Window 2.3
import QtQuick.Controls 2.3
ApplicationWindow {
id: _window
// 窗口标题设置
title: "Test App"
// 窗口大小设置
width: 500
height: 300
// Window默认不可见,需要进行设置为可见
visible: true
}
运行代码效果如图: