我对QML,QtQuick 1.0和QtQuick 2.0感到困惑。它们之间有什么区别?
我使用基于Qt 5.1.1的QtCreator 2.8.1。我想开发一个桌面程序,应该使用哪种技术?
我对QML,QtQuick 1.0和QtQuick 2.0感到困惑。它们之间有什么区别?
我使用基于Qt 5.1.1的QtCreator 2.8.1。我想开发一个桌面程序,应该使用哪种技术?
Answers:
编辑:请参阅@TheBootroo以获得更好的答案
尽管我的答案被OP接受,但我想修改(甚至删除)我的答案。
我的答案是基于2013年有关Qt 5.2的个人经验,其中一些今天不再有效:
回到Qt 5.2,当您构建Qt Quick应用程序时,一个重要的问题是该应用程序是QtQuick 1.x还是QtQuick2.x。这不仅影响了可用的组件,而且改变了应用程序的呈现方式。
早在2013年:
如果您必须针对较旧的操作系统(例如Windows XP)或较旧的硬件(例如OLPC),则通常选择QtQuick 1.x应用程序,因为QML UI组件(如Buttons)是由OS本身的组件呈现的。但是,这意味着您的目标是UI组件的最小公分母集,并且您的UI体验可能因平台而异。
选择QtQuick 2.x应用程序是为了获得更加一致的跨平台外观,但是,它要求您的平台充分实施OpenGLES,否则,应用程序可能无法加载。不幸的是,这将您的应用程序限制为仅实现OpenGLES的最新计算机和设备。
当我写下原始答案时,这导致我在某些情况下推荐使用QtQuick 1.x,而不是QtQuick2.x。
但是,从那时起,Qt 5+现在允许您将Windows定位为ANGLE,这通过将调用转换为对Direct3D的调用,可以为Windows桌面带来高性能OpenGL兼容性,Direct3D具有更好的驱动程序支持。
QML是语言的名称(就像C ++,这是另一种语言...)
QtQuick是用于QML的工具包,允许使用QML语言开发图形界面(还有其他用于QML的工具包,有些是图形的,例如Sailfish Silica或BlackBerry Cascade,而有些则是非图形的,例如QBS,可以代替QMake / CMake /使...)
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引入了新的由Qt员工创建的QML引擎,名为V4VM。
还有QtQuick控件,它基本上是基于QtQuick的一组本机外观的小部件。它最初是为台式机设计的,但是Qt 5.4基于holo主题引入了Android的本地L&F。材质主题以及iOS主题正在开发中,但是从当前Qt版本(5.5)开始不可用。一些控件仅用于企业版,但在Qt5.5中将其重命名为Extras,现在可用于所有许可证。正在进行的另一项开发名为QtQuickControls 2,它是对Controls的完全重写,旨在针对轻型嵌入式UI获得更好的性能,它应该在Qt 5.6中的Tech Preview阶段。
从Qt5.5开始,有一个名为QtQuick3D的新模块,该模块提供了使用QML语言创建3D应用/游戏的功能。它不使用太面向2D / 2.4D的SceneGraph。为此,一个新引擎名为FrameGraph。
如果您开发现代应用程序,则应使用Qt5.x + QML 2.x + QtQuick 2.x,以尽可能扩大用户群。
通常,使用Qt时,请始终遵循更新,因为它们会添加更多功能,更多性能和更多平台。