首页 文章

qt qml和qt之间的差异很快

提问于
浏览
57

Q1:我对qml,quick1.0和quick2.0很困惑 . 它们之间有什么区别 .

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

Q2:如何将数据导出到快速程序?我只找到关于qml的文档v 4.7 .

2 回答

  • 149

    EDIT: Please refer to @TheBootroo for a better answer

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

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

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

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

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

    早在2013年:

    • QtQuick 1.x应用程序经常被选择,如果您必须使用较旧的操作系统(例如Windows XP)或较旧的硬件(例如OLPC),因为QML UI组件(如按钮)是由您的操作系统本机组件呈现的 . 但是,这意味着您要定位最低标准的UI组件集,并且您的UI体验可能因平台而异 .

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

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

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

  • 13

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

    QtQuick是QML的工具包,允许用QML语言开发图形界面(QML还有其他工具包,有些像Sailfish Silica或_967130这样的图形,有些是非图形的,如QBS,它是QMake / CMake / make的替代品 . ..)

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

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

    QML引擎基于Qt4.x中的JsCore(Webkit的JS引擎),并且在V8(谷歌Chrome的JS引擎)上以5.0进行了重新定位,但这不允许在移动设备上使用它,特别是在iOS上,所以Qt5.2引入了一个新的QML引擎,名为V4VM,由/为Qt人创建 .

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

    从Qt5.5开始,有一个名为QtQuick3D的新模块,它可以使用QML语言创建3D应用/游戏 . 它不使用太2D / 2.4D导向的SceneGraph . 一个新的引擎被命名为FrameGraph用于此用途 .

    如果您开发现代应用程序,则应使用Qt5.x QML 2.x QtQuick 2.x,以触及最大的用户群 .

    对于Qt,一般来说,始终遵循更新,因为它们添加了更多功能,更多性能和更多平台 .

相关问题