16

诺基亚刚刚在 Qt 的最近beta版本中引入了 Qt Quick(以声明方式构建 UI,就像使用 CSS/HTML 一样),查看这个示例页面,它可以构建精美而现代的 UI,非常酷!

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

所以我的问题是,你会为新的桌面程序使用“传统 Qt”还是“Qt Quick”?为什么?

我最初的想法:

'传统Qt':

优点:

  • 使用的整体技术更少,因此更简单,如果你使用 PySide,你只用 Python 编码,不必在 Qt Quick 中搞乱 CSS/JS 之类的东西;

  • 它更成熟了。

    缺点:

  • 构建精美的 UI 似乎更困难?

'Qt 快速':

优点和缺点:反过来。

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

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

4

4 回答 4

8

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

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

我在 qml 中发现的问题

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

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

于 2011-03-31T12:25:52.787 回答
4

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

尽管“正常”的 Qt UI(带有 QWidgets 和布局等)较旧,但这并不一定意味着 Qt Quick 不成熟。毕竟,它是发布的一部分。

你没有在你的优点和缺点中指出的一件事是性能:“正常”的 Qt UI 是预先构建的(在大多数情况下,基本上),并且 Qt Quick UI 依赖于 QML 和 CSS/HTML 的运行时解释,正如你所说。这基本上不会影响桌面系统上的应用程序速度,但是如果您因为 UI 太花哨而遇到性能瓶颈,请不要说我没有警告您。尽管这样的瓶颈可能意味着您应该从一开始就使用 OpenGL。

Qt Quick 提供了一种构建酷 UI 的简单方法(无论如何这就是卖点),并且允许您以比旧东西更容易的方式使用更酷的效果。

于 2011-03-31T09:57:25.313 回答
3

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

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

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

于 2011-03-31T09:55:36.730 回答
0

I have not so experience on traditional Qt UI systems. But I can give you my experience on QtQuick:

  • UI using QML is more simple.
  • QML enables you to better developing using MVC pattern. It makes View separated from Model. You can load different version of the UI in runtime.
  • QML enables developing advanced UI.
  • It is very performant now (using QSceneGraph technology). It is implemented on multiple UI threads! I am not sure that you can make more performant UI using C++ anymore!
  • UI designers can develop UI simpler than HTML+CSS+Javascript!
  • You can develop your custom UI element by C++ using specific classes.
  • QML is based on OpenGL and in free version of Qt you need to notice that.
  • QML has a specific debugger and profiler. Debugging in UI is so easy.

If you want to develop your app using a standard patten like MVC, QML may be more suitable.
You need to be careful about performance notes.

于 2016-03-05T19:06:53.787 回答