Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4024523
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: 嵌入式

2013-01-03 17:56:43

QML是什么?

       QML是一种描述性的脚本语言,文件以.qml结尾。语法格式非常像CSS,但又支持javacript形式的编程控制。 它结合了QtDesigner UI和QtScript的优点。QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。



如何使用?

 
       在Qt C++文件中通过QDeclarativeView加载,就像使用UiLoader加载.ui文件一样。本文重点放在QML的语法上。Qt提供了一个工具QML Viewer可以查看.qml文件生成的效果,qmlviewer在Qt的bin目录下,可以用命令qmlviewer filename.qml 查看.qml的执行结果。



QML编写Hello world

Hello,World源代码如下:

  1. import Qt 4.7

  2. Rectangle {
  3.      id: page
  4.      width: 500; height: 200
  5.      color: "lightgray"

  6.      Text {
  7.          id: helloText
  8.          text: "Hello world!"
  9.          font.pointSize: 24; font.bold: true
  10.          y: 30; anchors.horizontalCenter: page.horizontalCenter
  11.      }
  12. }
第1行是Qt QML的统一用法,指明当前QML会使用Qt-4.7里已经定义好的类型,比如第3行的Rectangle和第8行的Text。
第3行开始至文章结束处则定义了一个矩形的图形区域对象,第4行则申明了该矩形区域对象的id为”page”可以被其它对象识别并通过该id访问其成员属 性,另外几个属性width/height/color则很好理解,语法跟CSS类似,可以写在一行中用分号”;”隔开。
第8行至第12行则是一个文本对象,看它代码的嵌套结构可以知道它是内嵌于Rectangle的。Text的属性除了anchors其它几个都能顾名思 义。anchors描诉的是当前对象的位置和其它对象的相对关系,这里看到其水平中心位置在“page“的水平中心位置。

       以上就是Hello,World的代码,将其存为hellowordl.qml,执行qmlviewer hellowrold.qml就能看到界面了。


阅读(4248) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~