QML学习之路(3)——QML文件加载

QML文件有两种加载方式:QQmlApplicationEngine 和 QQuickView,QQmlApplicationEngine的方式更新,且功能更强大,因此本文重点针对使用QQmlApplicationEngine加载QML文件的方式进行讲解。

QQmlApplicationEngine

QQmlApplicationEngine特点

  • 使QQuickView APP可以由C++进行控制
  • 将Qt.quit()和QCoreApplication::quit()进行了connect
  • 自动从mail QML文件的相邻i18n文件夹中读取翻译文件
  • 如果场景包含QQuickWindow,则自动设置孵化控制器。
  • 自动将QQmlFileSelector设置为url解析器

engine方式加载qml的方法

使用QMl加载时,我们要保证以下几点:

  • 加载的qml文件为一个Window而非item
  • visible必须为true,否则无法显示

qml文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import QtQuick 2.6             // Text
import QtQuick.Window 2.2 // Window

Window { //parent
visible: true //是否可见
width: 640
height: 480
title: qsTr("Hello World") // title of your gui

Text{
anchors.centerIn: parent // center
text : "Hello World";
color: "red";
font.pointSize: 20
}


}

engine方式加载qml文件非常简单,只要定义一个engine,同时加载对应的qml文件即可。

QQuickView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import QtQuick 2.0

Item { //Item可以被视作是包含其他组件的容器
id: container
property alias cellColor: rectangle.color //属性,可以被外界访问 alias代表别名
signal clicked(color cellColor)

width: 40; height: 25

Rectangle {
id: rectangle
border.color: "white"
anchors.fill: parent
}

MouseArea {
anchors.fill: parent
onClicked: container.clicked(container.cellColor)
}
}

参考文献

0%