您的位置:首页 > 其它

QML学习--基本概念

2014-09-23 17:26 232 查看
一.基本语法

(1)对象后面有大括号,里面有属性。对象的命名规则一般是大写字母开头,属性一般是小写字母开头。
(2)属性:值。还有属性:表达式。表达式一旦变化,相应的属性值也就变化。
(3)组件里面包含了很多对象。

(4)元素和对象有什么关系呢?最外层的元素就是根元素。一般我们理解为元素即对象。

(5)ctl + alt + 空格可以调出Qt Quick的工具栏。也可以在需要使用工具栏的地方右键单击,然后再调出。

二.qml工程文件的内容

(1)qml中的程序默认使用UTF-8,所以如果中文乱码,可以设置:

编辑--》选择编码,然后再据编码重新载入。

(2)这个文件指定了使用的qml文件以及js文件还有图片文件。

三.基本概念

(1)属性相当于常说的变量,有一定的类型。这些类型包括了





(2)属性更改:属性一旦更改就会有信号产生,可以利用信号处理器获取该信号。

一般语法格式为 on<属性名(首字母大写)>Changed: 处理函数。

(3)可以利用console.debug()以及console.log()函数来输出调试信息。

(4)列表属性

一般格式是



所以列表属性其实是一种对象(元素的集合),有一个列表名(相当于数组名,一般是小写开头),各个列表元素之间用逗号隔开,所有的列表元素用方括号括起来,如果只有一个元素可以省略方括号。根据列表元素出现的顺序,会有相应的索引生成,按照 列表名【索引号】的方式访问列表元素。

(5)Component.onCompleted会在组建创建完成的时候执行。

(6)关于默认属性(省略标签)和分组属性(使用分组符号以及大括号集合的方式)暂不详细讨论

(7)附加属性:语法格式为

Type.property。

其中的Type是附加该属性的元素或者元素类型,即该Type是拥有者,他要把它的property附加给别的元素(对象)。

四.属性绑定

1.任何javascript表达式给属性赋值都是一种绑定。而且还可以是常量以及函数以及众多语句的集合。如果语句过多要么重写组件,要么将这些语句写在一个单独的表达式。

2.更改绑定:

PropertyChanges元素(对象)可以更改属性的绑定。前提是状态发生改变,一般常配合state (属性):State(对象)使用,由此也可见可以将一个对象作为一个属性的值。当状态恢复的时候,绑定恢复。

3.javascript的表达式如果是直接用赋值表达式的方式给属性指定一个值,则绑定会失效,而且以后属性的值不会再发生改变。即

属性 = 表达式。而不是属性 : 表达式。

4.绑定元素:Binding。上述的是隐式绑定,如果用显示绑定则需要使用Binding对象(元素)。一般格式为

Binding{

target: 对象id

property: 对象属性(一般用双引号括起来)

value:要绑定到的值

}

五.QML文件

1.在将qml文件提交给qml运行环境之前会有预处理器对原来的qml文件进行处理。但是qml文件不会包含该预处理器。

2.qml文件一般以一个或者多个import语句开头。因为qml是一个版本控制语言,如果版本不一样,也许会影响到当前文件的元素类型的使用。尤其是在高版本的qml中使用原有的低版本的qml文件。

3.import语句不会引入任何东西到或者包含任何代码到qml文件,他只是起到一个帮助解析的作用,告诉qml运行环境在该文件中出现的元素类型如何解析。

4.qml文件默认不会倒入任何模块,所以至少要使用一个import语句来导入模块使得某些元素可用。

5.在同一个qml文件中的id值都是唯一的,不应该重复的,但是在不同的qml文件中可以使用相同的id值,因为id值得作用域是基于文件解析的。

六.qml文件作为组件定义

1.一个qml组件就是一个模板,可以被运行环境解析为一个带有一些预定义行为的对象。

2.基于这个模板可以创建很多对象,每个对象叫做该组件的实例。

3.一旦创建,这些实例就不再依赖于组件,他们可以独立地运行于其他数据和操作其他数据。

4.任何一个qml代码片段都可以作为一个独立的qml文件,从而成为顶级的,独立的qml组件。

5.要作为组件的qml文件的文件名必须是大写字母开头,一旦一个组件编写好以后,相对于同一目录中的其他qml文件和应用程序来说,运行环境会自动把它解释成一个新的可用的元素类型。

七.内联组件

1.可用的组件除了有qml文件定义的顶级组件,以及在独立文件中的可重用组件,还可以有内联组件。

2.文件中还可以包含内联组件,就是用Component元素声明的对象。

3.拥有和常规顶级组件一样的所有特性。

4.qml语言在直接将一个组件分配给一个属性的时候可以自动插入Component标签。所以

属性: 组件id



属性:Component{

组件的定义(除了组件id以外的所有定义部分)

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: