Qt Quick快速入门01

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kevin_org

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值