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();
}
上一篇: 01-mybatis 快速入门