qml具有层次结构,在main.cpp中只需要一个main.qml文件作文QML的入口文件。
其子元素从父元素上继承了坐标系统,它的x,y坐标总是相对应于它的父元素坐标系统。
QML中的注释是用的//
使用//可以单行注释,使用/**/可以多行注释,就像C/C++和JavaScript一样。
QML元素语法格式
可以看出QML的基本组成是元素和属性
元素名 {
属性名1: 属性值1
属性名2: 属性值2
...
子元素1 {
...
}
子元素2 {
...
}
...
}
元素
每一个QML文件都需要一个根元素,就像HTML一样。
一个元素使用它的类型声明,然后使用{}进行包含。
元素拥有属性,他们按照name:value的格式来赋值。
任何在QML文档中的元素都可以使用它们的id进行访问(id是一个任意的标识符)。
元素可以嵌套,这意味着一个父元素可以拥有多个子元素。子元素可以通过访问parent关键字来访问它们的父元素。
QML的属性
QML 中的元素可以拥有多个属性,用于控制元素的行为和外观。属性可以设置初始值、绑定、动画等,具有一定的动态性。属性可以使用 JavaScript 表达式进行计算,也可以绑定到其他属性或者信号上。
基本
(1)id是一个非常特殊的属性值,它在一个QML文件中被用来引用元素。id不是一个字符串,而是一个标识符和QML语法的一部分。一个id在一个QML文档中是唯一的,并且不能被设置为其它值,也无法被查询(它的行为更像C++世界里的指针)。
(一个元素id应该只在当前文档中被引用。QML提供了动态作用域的机制,后加载的文档会覆盖之前加载文档的元素id号,这样就可以引用已加载并且没有被覆盖的元素id,这有点类似创建全局变量。但不幸的是这样的代码阅读性很差。目前这个还没有办法解决这个问题,所以你使用这个机制的时候最好仔细一些甚至不要使用这种机制。如果你想向文档外提供元素的调用,你可以在根元素上使用属性导出的方式来提供)
(2)一个属性能够设置一个值,这个值依赖于它的类型。如果没有对一个属性赋值,那么它将会被初始化为一个默认值。你可以查看特定的元素的文档来获得这些初始值的信息。
(3)一个属性能够依赖一个或多个其它的属性,这种操作称作属性绑定。当它依赖的属性改变时,它的值也会更新