文档章节

Qml介绍

Amamatthew
 Amamatthew
发布于 2014/06/07 10:18
字数 609
阅读 51
收藏 0

QML是一种描诉性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS,但又支持javacript形式的编程控制。

我个人认为它结合了QtDesigner UI和QtScript的有点。

QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。

而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。本文不介绍如何在Qt C++中使用QML,而是把重点放在QML的语法上。

import QtQuick 2.2 
 Rectangle {
     id: page
     width: 500; height: 200
     color: "lightgray" 

     Text {
         id: helloText
         text: "Hello world!"
         font.pointSize: 24; font.bold: true
         y: 30; anchors.horizontalCenter: page.horizontalCenter
     }
 }

第1行是Qt QML的统一用法,指明当前QML会使用QtQuick 2.2里面已经定义好的类型,比如,第2行用到的Rectangle和第6行的Text。第2行开始至结束定义了一个矩形的图形区域对象。第3行则申明了该矩形区域对象的id为”page”可以被其它对象识别并通过该id访问其成员属性。

另外几个属性width/height/color则很好理解,语法跟CSS类似,可以写在一行中用分号”;”隔开。
第6行至第12行则是一个文本对象,看它代码的嵌套结构可以知道它是内嵌于Rectangle的。Text的属性除了anchors其它几个都能顾名思义。anchors描述的是当前文本对象的位置和其它对象的相对关系,这里看到其水平中心位置在“page“对象的水平中心位置。如果相对anchors了解更多,请参考锚的解释。以上就是Hello,World的全部代码。

在上面的代码中我们用到了Rectangle和Text,那么我还有哪些对象以及这些对象有哪些属性呢。请访问QML-Item类,Item类是QML最基础的类,通过查看它的继承类以及这些继承类可用的属性,你可以添加更多你感兴趣的内容。


本文转载自:http://www.cnblogs.com/hicjiajia/archive/2010/12/05/1896838.html

共有 人打赏支持
Amamatthew
粉丝 67
博文 1050
码字总数 76443
作品 0
厦门
后端工程师
私信 提问
用QML语言开发MeeGo应用程序在线开发教程 – MeeGo开发中文网

用QML语言开发MeeGo应用程序在线开发教程 – MeeGo开发中文网 用QML语言开发MeeGo应用程序在线教程 – MeeGo开发中文网 Qt Declarative UI 传得沸沸扬扬,却很少有中文资料介绍这是一个什么样...

look
2011/02/22
0
0
Qt Quick里的图形效果——颜色(Color)

Qt Quick提供了通过改变一个 Item 的颜色来产生各种各样效果的元素。有下面几种: BrightnessContrast,调整亮度和对比度 ColorOverlay,在源 Item 上覆盖一层颜色 Colorize,设置源 Item 的...

foruok
2015/01/19
0
0
将QML与Qt Widgets相结合

简述 在使用 Qt Widgets 时,经常要实现一些比较炫酷的效果(例如:滑动、翻页),这时选择 QML 会显得非常简单。 那么,问题来了: 能不能将 QML 和 Qt Widgets 结合在一起使用? 如果能,都...

潘志闻
2017/08/10
0
0
QML入门教程之 Hello world

QML是什么? QML是一种描述性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子),但又支持javacript形式的编程控制。 它结合了QtDesigner UI和QtScript的优点。QtDesig...

红薯
2011/06/02
934
0
Qt使用教程之使用Qt Quick UI表单(一)

<Qt Enterprise最新版下载> 本教程介绍如何使用ui.qml文件开发一个应用程序,使应用程序逻辑从UI中分离。该教程使用Qt Quick Designer实现一个简化版的UI表单示例,它为一个客户数据库提供接...

Miss_Hello_World
2016/02/05
107
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 11 已发布,String 还能这样玩!

在文章《Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码》中,我有介绍到 Java 11 的八个新特性,其中关于 String 加强部分,我觉得有点意思,这里单独再拉出来讲。 Java 11 增加...

Java技术栈
18分钟前
1
0
什么是以太坊DAO?(二)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 在上一节中,我们为了展示什么是DAO创建了一个合约,就像一个采用邀请制的俱乐部,会...

geek12345
33分钟前
4
0
全屋WiFi彻底无死角 这才是终极解决方案

无线网络现在不仅在家庭中不可或缺,在酒店、医院、学校等场景中的需求也越来越多。尤其是这些场景中,房间多但也需要每个房间都能够完美覆盖WiFi,传统的吸顶式AP就无法很好的解决问题。 H3...

linux-tao
47分钟前
4
0
Python日期字符串比较

需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些基础的日期格式化知识如下 复制代码 %a星期的简写。如 星期三为Web %A星期的全写。如 星期三为...

dragon_tech
48分钟前
3
0
ORA 各种oraclesql错误

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某...

青峰Jun19er
51分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部