漫谈 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的更多相关文章

  1. 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

    原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓. 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样 ...

  2. 【道德经】漫谈实体、对象、DTO及AutoMapper的使用

    写在前面 实体和值对象 实体和对象 故常无欲以观其妙,常有欲以观其徼 初始实体和演化实体 代码中的DTO AutoMapper实体转换 后记 实体(Entity).对象(Object).DTO(Dat ...

  3. CSS实现水平|垂直居中漫谈

    利用CSS进行元素的水平居中,比较简单,手到擒来:行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.而撸起垂直居中, ...

  4. QML 从无到有 3 (自动更新)

    新的需求出来啦,需要自动更新功能,不怕程序升级了. 自动更新,QML不好写,需要c++来辅助,这里就涉及QML中调用c++功能(这里就不写了,百度一下,很多). 思路:获取版本>下载程序> ...

  5. QML 从无到有 2 (移动适配)

    随着项目深入,需要移植到安卓上,问题来了,QML安卓适配! 幸好PC端程序和手机屏幕长宽比例相似.虽然单位像素,尺寸不同,通过比例缩放,可以实现组件PC和安卓通用代码. 第一步:定义全局的转换函数(3 ...

  6. QML 从无到有 (基础)

    小公司,没办法,什么都得自己亲自来. 服务端是MVC,现在需要可PC客户端和移动APP. 考虑到网页应用有很多界面框架,可以做出很漂亮的界面来,就尝试着使用nwjs来实现,可是在使用了2天的nwjs后 ...

  7. 【转】漫谈iOS程序的证书和签名机制

    转自:漫谈iOS程序的证书和签名机制 接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕 ...

  8. 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 ...

  9. QML杂记

    1.QML编写可视化元素,运行后程序窗口上无显示.检查电脑的显卡是否支持OpenGL,如果支持请更新显卡驱动. 2.加载图片显示QML Image: Cannot open.解决在qml.qrc右击添 ...

随机推荐

  1. CSS兼容的一些问题

    DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV+CSS设计的网页,就应该更注意IE6 ...

  2. Items divided

    Items divided 题目链接:http://acm.xidian.edu.cn/problem.php?id=1183 参考:http://www.cnblogs.com/wanghetao/ ...

  3. Spring 后置处理器 PropertyPlaceholderConfigurer 类(引用外部文件)

    一.PropertyPlaceholderConfigurer类的作用 PropertyPlaceholderConfigurer 是 BeanFactory 后置处理器的实现,也是 BeanFact ...

  4. iOS通过URL Scheme启动app(收集了常用的app的URL Scheme)

    URL Scheme不仅可以打开其他的app,当然你也能为自己的app设置URL Scheme 1.如何设置给app设置URL Scheme 添加URL types字段数组 设置URL identif ...

  5. 小程序--改变子级别页面导航栏信息 / navigationBarTitleText

    微信小程序在公共文件app.json中设置了导航栏相关样式如下: 其中  navigationBarTitleText 为设置导航栏名称,若是想子级页面和父页面的header页面不同,则在子级文件中新 ...

  6. Bullcow 牡牛和牝牛(bzoj 3398)

    Description     约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...

  7. Qt ImageProvider 的使用

    QQuickImageProvider 是一个可以支持在QML中使用 qpixmap 和 图片加载线程的类. 它支持在qml中使用Image加载的高级特性, 包括 使用 QPixmap 替代实际的im ...

  8. 常见编程语言对REPL支持情况小结[转]

    文章转载自http://www.nowamagic.net/librarys/veda/detail/2462 最近跟一个朋友聊起编程语言的一些特性,他有个言论让我略有所思:“不能REPL的都是渣”. ...

  9. linux设置环境变量

    设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...

  10. php的实参和形参

    1.实参是调用函数时候的参数; 2.形参是声明函数时侯的参数, 例如 public function demo($a,$b) {         return ; } 如果声明的函数如上,调用时dem ...