Qt 快速与 qt 快速的区别

我对 QML、 QtQuick 1.0和 QtQuick 2.0感到困惑。它们之间有什么区别?

我使用 QtCreator2.8.1基于 Qt5.1.1。我想开发一个桌面程序,我应该使用哪种技术?

35270 次浏览

编辑: 请参考@TheBootroo 获得更好的答案

虽然我的回答被 OP 接受了,但我想修改(甚至)删除我的回答。

我的回答是基于2013年 Qt 5.2的个人经历,其中一些经历如今已不再有效:

  • QML 是 Qt 元语言或 Qt 建模语言是一种用户界面标记语言。
  • QtQuick (QtQuick 1.x 和 QtQuick 2.x)使用 QML 作为设计以用户界面为中心的应用程序的声明性语言。

回到 Qt 5.2,当您构建一个 Qt Quick 应用程序时,一个重要的问题是这个应用程序是 QtQuick 1.x 还是 QtQuick 2.x。这不仅影响了可用的组件,而且还改变了应用程序的呈现方式。

回到2013年:

  • QtQuick 1.x 应用程序通常是在你不得不面向较老的操作系统(例如 Windows XP)或较老的硬件(例如 OLPC)时选择的,因为 QML UI 组件(例如 Buttons)是由操作系统本地的组件呈现的。然而,这意味着你的目标是一组最小公分母的 UI 组件,你的 UI 体验可能因平台而异。

  • 选择 QtQuick 2.x 应用程序是为了实现更一致的跨平台外观,但是,它要求您的平台充分实现了 OpenGLES,否则,您的应用程序可能无法加载。不幸的是,这将您的应用程序仅限于实现 OpenGLES 的最新计算机和设备。

当我写下我最初的答案时,这促使我推荐 QtQuick 1.x 在某些场景中优于 QtQuick 2.x。

然而,从那时起,Qt 5 + 现在允许你瞄准 Windows 上的 ANGLE,它通过转换对 Direct3D 的调用,为 Windows 桌面带来高性能的 OpenGL 兼容性,Direct3D 有更好的驱动支持。

QML 是语言的名称(就像 C + + ,是另一种语言... ...)

QtQuick 是一个用于 QML 的工具包,允许用 QML 语言开发图形界面(还有其他用于 QML 的工具包,有些是图形化的,如 旗鱼二氧化硅黑莓瀑布,有些是非图形化的,如 QBS,它是 QMake/CMake/make... 的替代品)

QtQuick 1.x 基于 Qt4.x,使用 QPainter/QGraphicsView API 绘制场景。 QtQuick 2.X 是基于场景图(Scene Graph)的 Qt5.0引入的,场景图是一个高度优化的 OpengLEs2抽象层。

在 Qt5.1中,场景图增强为使用多线程(QtQuick 2.1) 使用 Qt5.2,Scene Graph 进行了更多的优化,以减少 CPU/GPU 调用和内存使用

QML 引擎基于 Qt4.x 中的 JsCore (Webkit 的 JS 引擎) ,并基于5.0版本的 V8(Google Chrome 的 JS 引擎) ,但这不允许在移动设备上使用,特别是在 iOS 上,所以 Qt5.2引入了一个新的 QML 引擎,名为 V4VM,由/为 Qt 的家伙们创建。

还有 QtQuick 控件,它基本上是一组基于 QtQuick 的本机外观的小部件。它最初是为桌面设计的,但是 Qt 5.4基于全息主题为 Android 引入了一个原生的 L & F。一个材料主题,以及一个 iOS 主题,正在开发中,但目前 Qt 版本(5.5)还没有提供。有些控件只是企业级的,但是在 Qt5.5中它们被重命名为额外的,现在它们可用于所有的许可证。另一个正在进行的开发,名为 QtQuickControls 2,是对 Controls 的全面重写,为了获得更好的性能,针对轻型嵌入式 UI,它应该在 Qt 5.6的技术预览阶段。

从 Qt5.5开始,出现了一个名为 QtQuick3D 的新模块,它提供了使用 QML 语言创建3D 应用程序/游戏的能力。它不使用场景图,这是太2D/2.4 D 导向。为此,一个新引擎被命名为 FrameGraph。

如果你开发现代化的应用程序,你应该使用 Qt5.x + QML 2.x + QtQuick 2.x 来触及最广泛的用户群。

对于 Qt,一般来说,总是关注更新,因为它们添加了更多的特性、更多的性能和更多的平台。