qt qml和qt quick之间的区别

Q1:我对qml,quick1.0和quick2.0感到困惑,他们之间有什么区别。

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

Q2:如何将数据导出到快速程序?我只能find有关qml的文档v4.7。

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

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

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

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

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

早在2013年,

  • QtQuick 1.x应用程序经常被select,如果您必须定位较旧的操作系统(例如Windows XP)或较旧的硬件(例如OLPC),因为QML UI组件(例如button)由您的操作系统本地的组件呈现。 然而,这意味着你的目标是一个最常见的UI组件,而且你的UI体验可能因平台而异。

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

当我写下我的原始答案时,这导致我在QtQuick 2.x的某些场景中推荐QtQuick 1.x。

然而,从那以后,Qt 5+现在允许您在Windows上将ANGLE作为目标,通过将调用转换为具有更好的驱动程序支持的Direct3D,可以为Windows桌面带来高性能的OpenGL兼容性。

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

QtQuick是一个QML工具包,允许以QML语言开发graphics界面(QML还有其他的工具包,有些是像Sailfish Silica或者BlackBerry Cascade的graphics工具,有些是QBS的非graphics化工具,可以替代QMake / CMake /使…)

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

使用Qt5.1,Scene Graph得到了增强,可以使用multithreading(QtQuick 2.1)和Qt5.2一起,Scene Graph还有更多的优化来减lessCPU / GPU调用和内存使用

QML引擎基于Qt4.x中的JsCore(Webkit的JS引擎),并且在V8(Google Chrome的JS引擎)上重新devise了5.0版本,但不允许在手机上使用,尤其是在iOS上,因此Qt5.2引入了新的QML引擎,命名为V4VM,由Qt人创build。

还有QtQuick控件,基本上是一组基于QtQuick的本机外观小部件。 它最初是为桌面而devise的,但是Qt5.4引入了一个基于holo主题的Android本地L&F。 一个材质主题,以及一个iOS主题,正在开发中,但目前的Qt版本(5.5)还没有提供。 有些控件仅用于Enterprise,但在Qt5.5中,它们被重命名为Extras,并且现在可用于所有许可证。 另一个发展是名为QtQuickControls 2,这是一个完全重写的控件,以获得更好的性能,针对轻型embedded式用户界面,它应该在技术预览阶段在Qt 5.6。

从Qt5.5开始,有一个名为QtQuick3D的新模块,它能够使用QML语言创build3D应用程序/游戏。 它不使用太2D / 2.4D导向的SceneGraph。 一个新的引擎被命名为FrameGraph这个用途。

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

对于Qt,总的来说,总是要跟着更新,因为它们增加了更多的function,更多的性能和更多的平台。