可视化类型

Qt Quick 提供了标准qml类型,可视化类型,动画类型以及其他qml类型。

标准qml类型

官网的介绍原文请戳这里

  • qml语言提供的基本类型
类型 解释 写法
bool Binary true/false value
double Number with a decimal point, stored in double precision
enumeration Named enumeration value e.g:Text.AlignRight
int Whole number, e.g. 0, 10, or -20
list List of QML objects [ ]
real Number with a decimal point
string Free form text string
url Resource locator 和字符串一样
var Generic property type

为什么有一个url类型呢?我觉得除了语义化,专属于资源定位符外,还有一个好处是写资源路径的时候IDE可以自动提示。

  • qml模块提供的基本类型
类型 解释 写法
date Date value "YYYY-MM-DD" string
point Value with x and y attributes "x,y" string
rect Value with x, y, width and height attributes "x, y, width x height" string
size Value with width and height attributes "width x height" string
color ARGB color value. The color type refers to an ARGB color value. It can be specified in a number of ways: SVG color name;十六进制三元组或四元组;Qt.rgba(), Qt.hsva(), Qt.hsla(), Qt.darker(), Qt.lighter() or Qt.tint()
font Font value with the properties of QFont. The font type refers to a font value with the properties of QFont。(居然是一个对象)
matrix4x4 A matrix4x4 type is a 4-row and 4-column matrix Qt.matrix4x4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);
quaternion A quaternion type has scalar, x, y, and z attributes "scalar,x,y,z" string
vector2d A vector2d type has x and y attributes "x,y" string
vector3d Value with x, y, and z attributes "x,y,z" string
vector4d A vector4d type has x, y, z and w attributes "x,y,z,w" string

我没有想到qml模块会提供这么些基本类型,在我的印象中,这些都不是对象么?

可视化类型

先放一张Item子类的图

Item子类

当然还有Qt Quick Controls 2

Control

有部分是继承Popup

Popup

顶级窗口ApplicationWindow又是另外一套

window

关于这部分控件,我在开发的时候做过一些记录。
ApplicationWindow,最具体的qml主窗口

Page是可以变换样式的控件

Control是提供共同函数的控件

Lable是跟随系统字体和颜色的控件

Text是自定义文本

代理就是一个模具

Item可以和ItemDelegate融合在一起,Rectangle不行

FocusScope显示提供一块焦点区域

StackView基于栈的视图

QtQuickControls 1.4和2.2不一样

Pane背景色与应用程序的样式和主题一样

Page可以遮住后面的

Rectangle背景有颜色,有可选边框

ColumnLayout就是GridLayout的特例

Page外部的点击header感应不到

写在后面的组件比会覆盖前面的组件

动画类型

动画的继承图

可以看到qml对动画的支持还是非常好的。

在开发中我遇到过Pane和Page不支持动画,原因不清楚。

其他qml类型

这个其他类型是什么类型呢?信号槽连接的那个算不算?其他类型就是不是上面的三种类型。