哪里可以做虚拟货币网站,阿里巴巴1688官网网页版,深圳市住房和建设局电话,手机参数网一、QML 与 Qt Quick的区别 1.1 从概念上区分 为了更精确地对两者进行说明#xff0c;先看助手对 QML 的描述#xff1a; QML is a user interface specification and programming language. QML 是一种用户界面规范和标记语言#xff0c;允许开发人员和设计师创建高性能、流… 一、QML 与 Qt Quick的区别 1.1 从概念上区分 为了更精确地对两者进行说明先看助手对 QML 的描述 QML is a user interface specification and programming language. QML 是一种用户界面规范和标记语言允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序。 文档对 QML 的定义主要分为两点 用户界面规范QML 提供了一种高度可读、声明性、类似 JSON 的语法支持与动态属性绑定相结合的命令式 JavaScript 表达式。标记语言像 C 一样QML 是一种语言文件格式以 .qml 结尾。 再看助手对 Qt Quick 的描述 Qt Quick is the standard library of types and functionality for QML. Qt Quick 是 QML 类型和功能的标准库 包括视觉类型、交互式类型、动画、模型和视图、粒子效果和着色效果。 Qt Quick 使用 QML 作为声明语言来设计以用户界面为中心的应用程序。严格来讲Qt Quick 是一个用于 QML 的工具包允许以 QML 语言来开发图形界面。 1.2 从模块上区分 QML 由 Qt QML 模块提供QtQuick QML 库由 Qt Quick 模块提供。 Qt QML 模块为 QML 应用程序提供了语言和引擎基础结构。Qt Quick 模块提供了许多可视化组件、模型视图支持、动画框架以及用于构建用户界面的更多功能。 二、QtQuick 1.x 与 QtQuick 2.x 的区别 QtQuick 主要包括QtQuick 1.x 和 QtQuick 2.x它们之间的区别主要涉及以下内容 全新的 Qt 版本 QtQuick 1.x 基于 Qt4.x。QtQuick 2.x 随 Qt5.0 一起引入。 全新的绘图系统 QtQuick 1.x 使用 QGraphicsView/QPainter API 来绘制场景。QtQuick 2.x 基于 Scene Graph一个 OpenGLES2.0 抽象层对绘图进行了高度优化效率更高。 全新的 QML 引擎 Qt 4.x 中QML 引擎基于JSCJavaScriptCore - Webkit 的 JS 引擎。Qt 5.0 中引入 V8Google 的开源高性能 JavaScript 引擎用 C 编写用于 Chromium、Node.js 和多个其他嵌入应用程序。Qt 5.2 中引入了 V4 JS 引擎针对 QML 用例进行了优化并且可以选择关闭 JITJust-In-Time编译以符合 iOS 和 WinRT 平台的限制。个头更小、反应更快、扩展性也非常好。 从 Qt 5.5 开始加入了一个新模块 QtQuick3D它提供使用 QML 语言创建 3D 应用程序/游戏的能力其使用的是一个被命名为 FrameGraph 的新引擎而非 Scene Graph因为太 2D/2.4D。 模块、属性和方法、类型和 API、C 代码QtDeclarative 被移除了替代的它是Qt QML 和 Qt Quick 模块、QML 插件的更改。 …… 三、为什么要引入 QML/Qt Quick 在我看来主要归结为以下几点 战略性发展 Qt 想用 QML/Qt Quick 一统天下桌面 移动端。梦想还是要有的万一实现了呢 众所周知Qt 为跨平台而生而 QML/Qt Quick 作为 Qt 新生力量完完全全继承了 Qt 包罗万象的特点它的诞生为 Qt 进军移动领域迈出了历史性的一步。 随着 Qt 的不断迭代QML/Qt Quick 也可用于开发传统的桌面程序而且效率越来越高这样以来便可以用 QML/Qt Quick 做任何你想做的事情。QML/QtQuick 作为 Qt 的绝对核心特别是对于界面要求较高的开发者来说其作用更为重要。 开发效率的提升 传统上的 native UI 开发普遍使用 C、C#、Objective-C 等语言。但近年来本地应用使用 HTML5 JS 也成为了一种趋势。一方面硬件资源越来越丰富另一方面 Web 技术让 JS 的解析速度更快。 除此之外其中一部分功劳要归功于 Google由于其开源了其 NB 的 JS 引擎Node.js 加上一个前端框架也可以开发本地应用了。例如Electron - 构建跨平台的桌面应用程序。 QML/Qt Quick 和 Node.js 类似也提供了一系列 JS 和 C 交互的接口便于 JS 和 C 通信。 UI 与逻辑分离 尽管对于大多数情况而言在编写应用程序时只需 QML 和 JavaScript但在有些情况下需要计算密集型任务例如复杂图像处理、物理引擎并且将需要处理器竭力提供所有可用性能。 在这些情况下QML 应用开发适合使用 C 来进行扩展以便在后台执行资源密集型任务而界面设计和一些简单逻辑例如按钮变色、换肤、变形等都可以在 JS 中完成。这样避免了传统应用开发前端设计和后台逻辑混合的情况让界面设计者专心设计界面成为了可能。 由于 QML 是在 Qt 上构建的因此其继承了 Qt 框架中的大部分功能尤其是信号和槽机制以及元对象系统。使用 C 创建的数据可从 QML 直接访问而 QML 对象也可从 C 代码进行访问。 四、Qt Widgets 与 QML/Qt Quick Qt 4.7 发布时引入了 QML用于移动开发其全面支持触摸操作、流畅的动画效果等。但在 Qt 5 中QML 已经不再局限于移动开发也可用于开发传统的桌面程序。 随着 Qt 5 的持续更新QML 已经大大改善 - 添加了更多的功能、更好的性能以及更多的平台支持。话虽如此但 QML/Qt Quick 仍在发展随着版本的更新也会变得越来越成熟。 相比之下Qt Widgets 更“老”、更成熟而 QML/Qt Quick 则更“新”、更“现代”。无论如何Qt Widgets 和 QML/Qt Quick 都可以在多个平台上使用。 对于传统的桌面程序来说优先考虑使用 Qt Widgets若要开发更“现代”的 UI 与高级应用建议使用 Qt5.x QML 2.x QtQuick 2.x。 对于移动端开发来说建议使用 QML协同 JavaScript简单快捷、渲染效果更佳、界面更炫酷。不建议使用 Qt Widgets其显示效果、适应性都不好。