ChatGPT解决这个技术问题 Extra ChatGPT

qt qml 和 qt quick 的区别

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

我使用基于 Qt 5.1.1 的 QtCreator 2.8.1。我想开发一个桌面程序,我应该使用哪种技术?

看这里:qt-project.org/doc/qt-5.1/qtdoc/qtmodules.html(qml 和 quick 基本上是同一事物的两个方面——技术本身和控件库;现代版本是 qml2)

T
TheBootroo

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

QtQuick 是 QML 的工具包,允许用 QML 语言开发图形界面(还有其他 QML 工具包,有些是图形的,如 Sailfish SilicaBlackBerry Cascade,有些是非图形的,如 QBS QMake/CMake/make...)

QtQuick 1.x 基于 Qt4.x 并使用 QPainter/QGraphicsView API 来绘制场景。 QtQuick 2.X 是在 Qt5.0 中引入的,基于高度优化的 OpenGLES2 抽象层 Scene Graph。

在 Qt5.1 中,Scene Graph 得到了增强,可以使用多线程 (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 引入了基于 holo 主题的原生 L&F。材质主题和 iOS 主题正在开发中,但在当前 Qt 版本 (5.5) 中不可用。一些控件仅适用于 Enterprise,但在 Qt5.5 中它们被重命名为 Extras,并且它们现在可用于所有许可证。另一项开发正在进行中,名为 QtQuickControls 2,它是对 Controls 的完全重写,以获得更好的性能,针对轻型嵌入式 UI,它应该在 Qt 5.6 的技术预览阶段。

从 Qt5.5 开始,有一个名为 QtQuick3D 的新模块,它提供了使用 QML 语言创建 3D 应用程序/游戏的能力。它不使用过于面向 2D/2.4D 的 SceneGraph。为此使用了一个名为 FrameGraph 的新引擎。

如果您开发现代应用程序,您应该使用 Qt5.x + QML 2.x + QtQuick 2.x,以接触尽可能多的用户群。

对于 Qt,一般来说,始终关注更新,因为它们添加了更多功能、更多性能和更多平台。


这应该是“正确”的答案。这实际上描述了 QML 和 QT Quick 之间的差异,以及数十亿的变体/插件。干得好!
好总结。尽管请注意,从基于 QPainter/QGraphicsView 的 QtQuick1 迁移到基于 OpenGL/QSG 的 QtQuick2 并非完全没有缺点:例如,打印机支持相当依赖于 QPainter stackoverflow.com/q/20825233/24283
您忘记描述 QtQml 模块。
更新列表可能会很好。如果我陷入 Qt 5.11,该学习什么,忘记什么? - 要知道:QtQuick2、QtQuickControls2、QtQuickExtra、QML2、.pro - 要忘记:QtQuick1、QtQuickControls1、Widgets、QML1;什么没有完成? QBS,算了吧!
为什么使用 V8 不允许在移动设备上使用?
S
Stephen Quan

编辑:请参阅@TheBootro 以获得更好的答案

尽管我的答案被 OP 接受,但我想修改(甚至)删除我的答案。

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

QML 是 Qt Meta Language 或 Qt Modeling Language 是一种用户界面标记语言。

QtQuick(QtQuick 1.x 和 QtQuick 2.x)使用 QML 作为声明性语言来设计以用户界面为中心的应用程序。

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

回到 2013 年:

如果您必须针对较旧的操作系统(例如 Windows XP)或较旧的硬件(例如 OLPC),通常会选择 QtQuick 1.x 应用程序,因为 QML UI 组件(例如按钮)是由您的操作系统本机组件呈现的。但是,这意味着您的目标是一组最低公分母的 UI 组件,并且您的 UI 体验可能因平台而异。

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

当我写下我的原始答案时,这导致我在某些情况下推荐 QtQuick 1.x 而不是 QtQuick 2.x。

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


你在 QML2 引擎上大错特错,看看我的回答:QML2 只是 QML1 引擎在 V8 引擎上的重写。现在它被移植到新引擎 V4VM 上,因为 V8 不兼容 iOS!因此,由于发布问题的人使用的是 Qt5.1,因此在更新到 Qt5.2+ 之前,他不会在 iOS 上运行...
谢谢@TheBootro。我回答的目的是为什么你会选择 QML2 而不是 QML1。尽管 OP 使用的是 Qt5.1.1,但我并没有具体说明。我澄清了我的答案,引用 QML2 作为未来证明的一种手段,但是,如果您的硬件不能充分提供 QML2 所需的足够 OpenGL,那么 QML1 可能是您唯一的选择。
我将删除整个“如果您对开发 iOS 和 Android(即仅在 Windows 平台上)不感兴趣”部分。 QQ2 应用程序可以在 Windows、Linux、OSX、QNX 上愉快地运行。
QQ2 只在我们办公室一半的机器上运行。其中一些是全新的 Windows 8 平板电脑。我们知道问题是由于显卡没有实现 QQ2 所需的所有 OpenGL 堆栈。
对 OpenGL 的依赖性得到了改善,请参阅 here 了解更多信息。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅