漫谈QML
漫谈 QML/Qt Quick
QML是从Qt 4.7开始引入的,QML是一种声明语言,使得可以像设计师思考的一样编码,并且Qt Quick元素就是应用程序的编译单元,每一帧的故事板被声明为元素树中的一个分支,每一个视觉方面的分支元素的属性被声明为一帧,每帧之间的过渡可装饰 各种动画和特效。
Qt Quick运行时实现了UI并且提供直接访问本地API的功能,并且在适当的时候可以使用C++扩展获取更好的性能。由于Qt Quick的运行时也是在Qt内部实现的,所以可以十分简单的做到跨平台。
Qt是为现代产品开发方式所构建的。核心的逻辑部分由开发者编码并优化,用户界面由设计师通过可视化工具完成。Qt也集成了工具,支持这种方式的迭代开发。
Qt Quick是构建在强大的Qt之上。QML可以用来扩展已经存在的应用或者是构建全新的应用。QML是完全从C++扩展而来的。
QML文档在硬盘或者是网络资源上生成纯文本文件,但是也可以通过文本数据构造。
我们来看看一个简单的QML文件的格式:

再来看看效果:

其实QML只是一种语言,它主要是定义了QML文件的语法,以及QML语言的基本实现。而Qt Quick内置很多常用的元素,使得我们可以很方便的使用。我个人将QML和Qt Quick的关系类比编程语言和编程框架(或者函数库)。
Qt Quick内置了很多常用的可视化元素,主要如下图:

Qt Quick也提供了对动画,以及模型/视图编程,以及数据存储等方面的支持。
下面我们来看看Qt 提供的文档对QML和Qt Quick的介绍。
首先是QML:
Qt QML模块为使用QML语言开发应用程序提供了框架和库。它定义并实现了语言以及引擎,并且提供了API使得应用程序开发者可以使用自定义类型扩展QML语言,并且将QML代码和JavaScript,C++集成。
Qt QML模块提供了QtQml
QML模块,该模块提供了一系列核心的QML类型,用于创建QML应用;也提供了QtQml C++模块,该模块提供了一系列的C++
API用于使用自定义类型扩展QML应用,并且将C++实现集成到QML应用程序中。
QML模块提供的QML类型:

QML模块提供的C++ API:

注意:Qt QML模块只提供语言以及QML的基本实现,并不提供一个可视化的画布或者渲染引擎用于创建用户界面。这两个部分都是由Qt Quick提供的Qt Quick提供了许多组件,模型/视图支持,动画框架并且许多用于创建用户界面的QML细节。
再来看看Qt Quick:
Qt Quick是用于创建QML应用程序的标准库。Qt
QML模块提供QML的引擎以及语言基础,Qt
Quick模块提供QML创建基本用户界面的常用元素。它提供了可视化的画布用于创建和绘制可视化组件,接受用户输入,创建数据模型,视图以及代理。
Qt Quick模块提供了QtQuick QML模块,该模块提供了一系列用于创建用户界面的QML类型;也提供QtQuick C++模块,该模块提供一系列C++ API用于集成用户界面和QtQuick QML模块
Qt Quick提供的基本QML类型:

Qt Quick提供的C++ API:

漫谈QML的更多相关文章
- 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析
		
原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓. 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样 ...
 - 【道德经】漫谈实体、对象、DTO及AutoMapper的使用
		
写在前面 实体和值对象 实体和对象 故常无欲以观其妙,常有欲以观其徼 初始实体和演化实体 代码中的DTO AutoMapper实体转换 后记 实体(Entity).对象(Object).DTO(Dat ...
 - CSS实现水平|垂直居中漫谈
		
利用CSS进行元素的水平居中,比较简单,手到擒来:行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.而撸起垂直居中, ...
 - QML 从无到有 3 (自动更新)
		
新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序> ...
 - QML 从无到有 2 (移动适配)
		
随着项目深入,需要移植到安卓上,问题来了,QML安卓适配! 幸好PC端程序和手机屏幕长宽比例相似.虽然单位像素,尺寸不同,通过比例缩放,可以实现组件PC和安卓通用代码. 第一步:定义全局的转换函数(3 ...
 - QML 从无到有 (基础)
		
小公司,没办法,什么都得自己亲自来. 服务端是MVC,现在需要可PC客户端和移动APP. 考虑到网页应用有很多界面框架,可以做出很漂亮的界面来,就尝试着使用nwjs来实现,可是在使用了2天的nwjs后 ...
 - 【转】漫谈iOS程序的证书和签名机制
		
转自:漫谈iOS程序的证书和签名机制 接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕 ...
 - UP board 漫谈(1)——从Atom到UP Board
		
title: UP board 漫谈(1)--从Atom到UP Board date: 2016-12-26 12:33:03 tags: UP board categories: 开发板 perma ...
 - QML杂记
		
1.QML编写可视化元素,运行后程序窗口上无显示.检查电脑的显卡是否支持OpenGL,如果支持请更新显卡驱动. 2.加载图片显示QML Image: Cannot open.解决在qml.qrc右击添 ...
 
随机推荐
- 两年后的随笔+this的思考
			
恍惚看到自己在博客园的文章,唯一的一篇已经是接近两年前,再看看自己的名字...已然中枪了 从两年前的.net初学者,到现在工作之后阴差阳错转为前端... 两年过去了,现在回想起来,感觉成长的太少... ...
 - MITMF
			
一. 安装 项目地址:https://github.com/byt3bl33d3r/MITMf 需要自行手动安装python-nfqueue,pefile模块 sudo apt-get install ...
 - css ::before和::after伪元素的用法
			
css ::before和::after伪元素的用法:http://blog.dimpurr.com/css-before-after/
 - Sass与Compress实战:第五章
			
概要:第5章展示了Compass如何使你免去编写跨浏览器的CSS3的痛苦. 本章内容: ● 用Compass的CSS3模块创建跨浏览器的CSS3样式表 ● 在低版本IE中支持一些CSS3的特性 ● C ...
 - hdu_5884_Sort(二分+单调队列)
			
题目链接:hdu_5884_Sort 题意: 有n个数,每个数有个值,现在你可以选择每次K个数合并,合并的消耗为这K个数的权值和,问在合并为只有1个数的时候,总消耗不超过T的情况下,最小的K是多少 题 ...
 - js提交form表单
			
<form action="/Enterprise/member" id="sendinviteid" method="post"&g ...
 - git三个区域详解
			
一.可以将git简单的分为三个区域 1.工作区(working directory) 2.暂缓区(stage index) 3.历史记录区(history) 二.三个区域关系:工作区 ...
 - 朱丽叶—Cuda+OSG
			
#include <cuda_runtime.h> #include <osg/Image> ; typedef struct cuComplex { float r; flo ...
 - 千万PV级别WEB站点架构设计
			
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1369762 高性能与多 ...
 - ActiveMQ in Action(4) - Security
			
关键字: activemq 2.4 Security ActiveMQ支持可插拔的安全机制,用以在不同的provider之间切换.2.4.1 Simple Authentication Plug ...