桌面程序的“传统Qt”或“Qt Quick”?

时间:2011-03-31 09:35:00

标签: qt qt4 qt-quick

诺基亚刚刚在最近的 beta 版本的Qt中推出了Qt Quick(在声明中使用CSS / HTML构建UI),请查看example page,它可以构建精美的现代UI,很酷!

相反,“传统Qt”开发的用户界面似乎不那么花哨(我可能错了,请参阅下面的免责声明)。

所以我的问题是,您是否会将'Traditional Qt'或'Qt Quick'用于新的桌面程序?的为什么吗

我最初的想法:

'传统Qt':

优点:

  • 使用的整体技术更少,更简单,如果你使用PySide,你只需用Python编写代码,就不必乱用Qt Quick中类似CSS / JS的东西;

    < / LI>
  • 它已经成熟了。

    缺点:

  • 构建花哨的UI似乎更难?

'Qt Quick':

利弊:反过来。

Edit:Qt Quick有一个缺点,如果我错了,请纠正我,你不能以所见即所得的方式设计Qt Quick UI,对吗?

免责声明:我是Qt,PySide和Python的新手,最近刚开始使用这些技术来评估构建桌面程序。

4 个答案:

答案 0 :(得分:8)

ave一直在为我的桌面弄乱qml,我个人发现了这个:

  • 比传统的qt / c ++ / pyqt更容易创建动画(我喜欢动画:)
  • 我没有查看所有示例,但qml应用程序的代码大小看起来比c ++中的等效应用程序小

我在qml中发现的问题

  • 缺乏qml设计支持 - 目前自定义元素不会出现在qml designer中。这是一个很大的痛苦因为理想情况下我应该让设计师创建我的ui并且我专注于代码。他们的qml设计师仍然需要一些工作
  • 您需要学习javascript,因为它是qt中“推荐”的脚本编写方式。 Javascript并不容易,因为你可能期望例如学习python花了我几个小时,但javascript看起来表面上类似于c但它的一些概念是不同的。此外,我想知道我是否可以在我只是javascript和qml编写的应用程序中保护知识产权。(如果我错了,请纠正我)
  • 原生窗口小部件在qml中不可用,例如它只提供矩形等,您可以组合它们以形成自己的窗口小部件。

这并没有阻止我玩qml并且随着它的成熟,我将采取观望态度。目前我正在使用qml作为后端的部分ui和c ++。

答案 1 :(得分:4)

你犯了一个错误:Qt Quick仅在Qt的测试版中不可用。它是自4.7以来官方Qt版本的一部分(尽管每个次要版本都显着改进了Qt Quick提供的功能)。

虽然“普通”Qt UI(包含QWidgets和布局等)较旧,但这并不一定意味着Qt Quick不成熟。毕竟,这是发布的一部分。

你未能在你的专业和缺点中指出的一点是性能:“正常”Qt UI是prebuillt(基本上是大部分),Qt Quick UI依赖于QML和CSS / HTML的运行时解释说。这通常不会影响桌面系统上的应用程序速度,但是如果你因为你的UI过于花哨而遇到性能瓶颈,那就不要说我没有警告你。虽然这样的瓶颈可能意味着你应该从一开始就使用OpenGL。

Qt Quick提供了一种简单的方法来构建一个很酷的用户界面(无论如何这是卖点),并且可以让你以比旧的更简单的方式使用更酷的效果。

答案 2 :(得分:3)

如果您使用的是Python,那么您可能并不关心性能。传统的Qt也可以通过QSS实现漂亮的外观。 Qt Quick提供的是一种轻松构建UI的方法(即使没有4.8中引入的工具支持),也可以使用脚本来使其工作。

您也可以使用传统的Qt创建精美的UI,主要通过QSS和派生现有的小部件。大多数Qt示例都没有关注这一点,但这并不意味着它无法完成。它也可能提供更好的整体性能,尤其是在用C ++编写时。

我会使用传统的Qt,因为我对它更熟悉。但无论如何这是主观的,所以我认为你的问题将被关闭。

答案 3 :(得分:0)

我对传统的Qt UI系统没有那么多经验。但我可以告诉你我在QtQuick上的经历:

  • 使用QML的UI更简单。
  • QML使您能够更好地使用MVC模式进行开发。它使View与Model分离。您可以在运行时加载不同版本的UI。
  • QML可以开发高级用户界面。
  • 现在非常高效(使用QSceneGraph技术)。它在多个UI线程上实现!我不确定您是否可以使用C ++创建更高性能的UI!
  • UI设计人员可以开发比HTML + CSS + Javascript更简单的UI!
  • 您可以使用特定的类通过C ++开发自定义UI元素。
  • QML基于OpenGL,在Qt的免费版本中你需要注意到这一点。
  • QML有一个特定的调试器和分析器。在UI中进行调试非常简单。

如果您想使用像MVC这样的标准模式开发您的应用,QML可能更合适 你需要注意性能笔记。