欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Qt Quick快速入门01

程序员文章站 2022-03-05 23:24:07
...

Qt Quick快速入门

1. Qt Quick基本程序结构

下面先来看一段程序

import QtQuick 2.2
import QtQuick.Window 2.1

Window{
	vasible: true;
	width: 600;
	height: 400;
	MouseArea{
		anchors.fill: parent;
		onClicked: {
			Qt.quit();
		}
	}
	Text{
		text: qsTr("Hello Qt Quick!");
		anchors.centerIn: parent;
	}
}

从上面这段程序可以看出,一个QML文档由两个部分组成;

  • import语句
  • QML对象树
(1) import语句

import语句在这里就相当于C++中的include语句,它就是用来导入一个模块,这是使用某种QML类型所必需的。
import QtQuick 2.2,这行代码引入了2.2版本的QtQuick模块。部分基础的QML类型,如Text、Rectangle、Item、Row等,都包含在这个模块中;import QtQuick.Window 2.1,这行代码引入了2.1版本的Window模块。Window模块包含的主要类型是Window,它代表了一个QML的顶层窗体,对应C++类型为QQuickWindow。

(2) QML对象树

从上述代码可以看出来,Window是该程序的最外层对象,也是该程序的根对象,而MouseArea和Text是它的子对象,如果它们也有子对象…如此类推,一个QML文档就对应一颗以文档根对象为根的对象树
现在可以简单的这么理解QML对象的父子关系;嵌套在对象A内部的对象B,是A的孩子,它的爸比是A。而这种父子关系,从QML对象属性角度来讲,通常又和默认属性关系联系到了一起。

(3) 默认属性

QML元素的默认属性,通常用来接收那些没有显示使用“property: value”形式初始化的对象。比如window类型的默认属性是data,一个list类型的列表,如果你是在Window对象内声明了其他对象(比如上述代码中的Text对象),并没有显示赋值给某个属性,那这个对象就会存入data列表中。

除了Window及其派生类外,QML中其他的可见元素大多是Item的派生类,Item的默认属性也是list类型的data。

2. 启动Qt Quick App模式的方式

从C++类型来看,QML中的Window对应Qt C++中的QQuickWindow,而QQuickView则是从QQuickWindow继承而来,所以QQuickView和Window异曲同工。两者区别是使用QQuickView显示QML文档,对窗口的控制权在C++代码;而是用QQmlApplicatinEngine加载以Window为根对象的QML文档,QML文档则拥有窗口的完整控制权,可以直接设置标题、窗口尺寸属性。

(1) QQmlApplicatinEngine搭配Window
#include <QGuiApplication>
#include <QQmlApplicatinEngine>

int main(int argc, char* argv[])
{
	QGuiApplication app(argc, argv);
	
	QQmlApplicatinEngine engine;
	engine.load(QUrl(QStringLiteral("qrc:://main.qml")));

	return app.exec();
}
(2) QQuickView搭配Item
#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char* argv[])
{
	QGuiApplication app(argc, argv);
	
	QQuickView viewer;
	viewer.setResizeMode(QQuickView::SizeRootObjectToView);
	viewer.setSource(QUrl("qrc:://main.qml"));
	viewer.show();

	return app.exec();
}
相关标签: Qt Quick