qml

用qt很久了,但是一直没有注意到一个叫做qml的东西,今天google了一下,总结一下我的理解。

从表面上看qml就是用css javascript那一套来做软件的GUI,和原来的C++的widget之类的完全是两个独立的系统,它比较适合做一些简单的纯粹GUI的手机应用,对于复杂的应用比较费劲,比如如果牵扯进去数据库的交互,多线程的加速等等,用qml来做很不成熟,除非对软件做一个很清晰对client server架构对切割处理,但是这个对一个简单的desktop应用显然有点小题大做,本来一个指针可以做到的事情现在却要用一些通信协议才能完成,太浪费资源。另外qml作为GUI的定制性质比较强,复杂的control要自己从头设计,这个成本可能比较高,当然也会找到很多现成多,但是这显然不比系统自然集成的widget。

总结一下,qml看起来就是一个很美的梦,有着很好的架构,但是牵扯到实际到应用由于环境很复杂,这么完美东西到了现实的世界就有些不太适应了。

最后附一些qml的学习文章

http://qt-project.org/doc/qt-4.8/qml-intro.html

http://stackoverflow.com/questions/4610073/qt-designer-c-or-qml-for-gui

时间: 2024-10-29 08:09:40

qml的相关文章

QT Demo 之 window(5) window.qml

在分析了main.cpp.Splash.Qt.quit()以及ScreenInfo之后,我们终于开始了正题:window.qml. window.qml的主体结构 window.qml主体是一个QtObject,其中包含了4个子元素:palette.controlWindow.testWindow和splashWindow: QtObject { property real defaultSpacing: 10 property SystemPalette palette: SystemPale

QML 与 C++ 交互之工厂方法

QML 与 C++ 交互之工厂方法 先看例如以下的类声明,声明了一个产品类和工厂类. #include <QObject> class Productor : public QObject { Q_OBJECT Q_PROPERTY(int age READ age WRITE setAge NOTIFY ageChanged) public: explicit Productor(QObject *parent = 0); int age() const; void setAge(int a

QML学习之浅谈Window

转载地址:http://blog.csdn.net/kanchuan1905/article/details/53762788 在Qt Quick的世界里,Window对象用于创建一个与操作系统相关的顶层窗口,包含了如Text, Rectangle, Image等元素.Window还有一个派生类,即大名鼎鼎的ApplicationWindow,也可以作为QML文档的根对象.上一篇文章,我们提到的使用QQuickView加载QML的方式,顶层窗口是由QQuickView创建的. 要使用Window

QML——添加自定义模块

一.模块的定义 在使用QML时,我们常常看到类似这样的语句: import QtQuick 2.0 import QtSensors 5.0 通过这些import语句,我们就能使用QML中的相关控件了. 其实这就是导入模块的意思,它包括3个部分:import关键字.模块名称.版本号. 模块是一种封装的方式,设计它的人可以单独更新模块内容,然后更新版本号,对使用模块的人没有影响.在项目中,不同窗口可以使用同一模块中的一些类型. Qt中已经有很多封装好的模块,我们可以在安装目录里找到: 更多介绍,可

QtScript, QML, Quick1, Quick2, Declarative 之间的关系

QtScript是基于 ECMAScript 的脚本语言 在脚本中可以访问原有C++代码中的QObject类型及其子类的实例,连接信号和槽:也可以创建QObject类型及其子类的实例. 但是QtScript并不能独立运行,必须和C++代码配合才能实现完整的功能. 在 Qt 5 中把 Qt Script 和 Qt Script Tool 2个模块,从模块的列表中消失了,虽然依然保留在了 Qt 5 中,但重要性降低了不少. Qt Quick1 是一个集合,用于在各种移动设备上创建交互界面.设计的目的

QML学习【一】Basic Types

  QML入门教程(1) QML是什么? QML是一种描述性的脚本语言,文件格式以.qml结尾.语法格式非常像CSS(参考后文具体例子),但又支持javacript形式的编程控制.它结合了QtDesigner UI和QtScript的优点.QtDesigner可以设计出.ui界面文件,但是不支持和Qt原生C++代码的交互.QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从 QtScrip

QT开发(五十二)———QML语言

QT开发(五十二)---QML语言 QML是一种声明语言,用于描述程序界面.QML将用户界面分解成一块块小的元素,每一元素都由很多组件构成.QML定义了用户界面元素的外观和行为:更复杂的逻辑则可以结合JavaScript脚本实现. 一.QML基础语法 1.Import语句 QML代码中,import语句一般写在头几行,主要用途如下:     A.包含类型的全名空间     B.包含QML代码文件的目录     C.JavaScript代码文件 格式如下: import Namespace Ver

Qt的Script、Quick、QML的关系与总结

背景 最近在学QML,感觉也不难,就是一直以来接触 Qt 的脚本类的东西的顺序是Script.Quick1.Declarative.Quick2.QML.那么每一个都是干什么的呢,这些东西搞的我有点混乱,所以决定把他们的大概都先弄清楚,以便更好地学习. 历史 先去扒一下它们的历史. QtScript 从 Qt 4.3 开始引入.Qt Quick1 从 Qt 4.7 开始引入.Qt Quick1 包含 Qt Declarative 模块.QML.Qt Quick1.1 从 Qt 4.8 开始引入.

QML布局管理

QML中的布局管理 1. 定位器 Column Row Grid Flow 2. 重复器Repeater 3. 使用切换 四个定位器中都有一个add和move属性,都需要分配一个Transition对象 QML中给予锚的布局 anchor.margins来指定四个相同的边距 leftMargin.rightMargin.topMargin和bottomMargin来独立指定锚边距 学习Qt的资料比较少,Qt自带Demo是非常不错的选择.下面来自Example:QML Control 界面如下: