QML学习--基本概念

一.基本语法
(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以外的所有定义部分)
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值