首页 > 代码库 > QtScript, QML, Quick1, Quick2, Declarative 之间的关系
QtScript, QML, Quick1, Quick2, Declarative 之间的关系
QtScript是基于 ECMAScript 的脚本语言
在脚本中可以访问原有C++代码中的QObject类型及其子类的实例,连接信号和槽;也可以创建QObject类型及其子类的实例。
但是QtScript并不能独立运行,必须和C++代码配合才能实现完整的功能。
在 Qt 5 中把 Qt Script 和 Qt Script Tool 2个模块,从模块的列表中消失了,虽然依然保留在了 Qt 5 中,但重要性降低了不少。
Qt Quick1 是一个集合,用于在各种移动设备上创建交互界面。设计的目的是为了是UI设计师和开发人员可以更紧密的工作。
其中包含了用户界面元素、一种描述交互界面的语言(QML)、QML语言的Runtime(Qt Declarative 模块)
QML 在语法上遵守 JavaScript 的语法,并进行了 Qt 必须的扩展。
Qt Declarative 模块提供了一个动态框架用来构建动态的交互界面,为 QML 提供运行环境;解决了 C++ 和 QML 的交互问题。
Qt Quick2 提供了5个 Qt模块 作为开发 QML 程序的框架,包括 Qt QML, Qt Quick, Qt Quick Controls, Qt Quick Dialogs, Qt Quick Layouts 共5个模块
目前已经是 Qt 5 的时代,但根据之前 Qt 3 的经验, Qt 4 还将继续存在很长的时间。
在 Qt 5 中 QtScript 被降级; Declarative 模块被2个 QML 模块取代; Quick1 除了支撑旧的 QML 脚本外,几乎没有什么用途了; Quick2 和 QML 在未来的 Qt 版本中会得到越来愈多的重视,在 Qt 5 中 Quick2 添加了很多有意思的功能,还需要继续深入的学习。
那么 QtScript 和 QML 有没有关系呢?
首先2者没有直接关系,都是脚本。
QtScript 遵从 ECMAScript 的标准
QML 是 Qt 自己定义的语法,类似 JSON
QML 设计本意是为了使用 动态语言 编写交互界面
QtScript 设计本意是为了使得 动态语言 业务逻辑部分,当然也可以是部分界面层次的逻辑。
http://www.blogs8.cn/posts/WtDY5e4
QtScript, QML, Quick1, Quick2, Declarative 之间的关系