5

我现在正在用 Python(PyQt / PySide)编写一个应用程序,它应该可视化并且应该可以编辑复杂的数据流图(如搅拌机中的节点)。另外,我希望这些节点显示 opengl 3D 对象(小的 opengl 场景,如节点上的按钮)、图像、控件等。 GUI 也会很复杂 - 它允许细分到面板并允许在每个面板中打开上下文(就像在 Eclipse 或 Visual Studio 中一样)。

我现在正在学习QtQuick 2.0,我已经阅读了 Qt 5 中的绘画概述。我想知道使用QtQuickover的真正好处是什么QPainterQtQucik 2.0不再QGraphicsView用作其后端(它直接使用OpenGL上下文)

在您可以使用的每种技术中OpenGL。在每一个中,您都可以绘制自定义外观的按钮和小部件(如节点、它们的连接等)(您甚至可以自己绘制它们QPainter并自己处理鼠标)。

当然qml是声明性的并且可以优化OpenGL调用,但这真的重要吗?我一直在寻找QPainter( QGraphicsView) 之间的任何基准测试,QtQuick 2.0但没有发现任何有趣的东西。

所以问题是:

  1. 真的QtQuick是“未来”的技术吗?如果可能,我应该使用它吗?我将来会从中受益吗?或者它是简单的“另一种”方式来做同样的事情,比如QPainterwithQGraphicsViewQWidgets
  2. 的可能性QtQuick 2.0真的高于PySide/PyQt吗?
  3. QtQuick更适合开发这种应用程序还是应该坚持PySide/PyQTQPainter
4

2 回答 2

1

如果您想将 UI 直接嵌入其他 OpenGL 元素,尤其是当您希望在有限的硬件上平滑过渡、动画等时,OpenGL 最重要。

1), 2) 很难回答 - 这取决于。对于具有类似 Eclipse 的复杂 UI 的桌面应用程序,在 QtQuick 中做所有事情是不可行的。我会留在那里的小部件。在 QtQuick 中重新实现 Eclipse 将是一项艰巨的任务,最终会导致一个几乎无法使用的 UI,与桌面无法很好地融合。如果您想要动画的自定义 UI,那么我会选择 QtQuick。那里有适合这项工作的工具,在 QWidget/plain QGraphicsView 中模仿它会很痛苦。

于 2013-01-28T07:20:46.677 回答
-1

A1。QtQuick 是一种实现流畅高级 UI 的现代技术。它使用场景图作为后端,这是以高性能和非常智能的方法利用硬件加速的最新技术。如果目标机器支持 OpenGL ES 2,场景图在 QPainter、QGraphicsView、场景图之间具有最佳性能。
它非常高效,但您需要注意一些性能技巧以保持尽可能高的性能。
它自然适用于 MVC/MVC 类模式,但选择/设计一个高效且合适的模型来集成和交互 Model/Controller/View 需要经验)。

A2。你的问题是错误的!QtQuick 是 Qt 的一部分,而不是与整个 Qt 平行的新事物。

A3。根据我的经验,在大型复杂应用程序的情况下,您需要谨慎选择一种好的方法来集成 C++ 和 QML(换句话说,从 C++ 控制 UI)。
您还可以使用 QPainter 或 QGraphicView 或 QOpenGL 或 QQuickItem 创建自定义元素,并将其与基于 QtQuick 的 UI 集成。
请记住,现在不可能静态构建 QtQuick!(AFAIK)

最后一句话,我强烈建议你在现实世界中学习和测试它。因为它在 Qt 框架中发展迅速,在我看来它是未来。

于 2016-02-20T13:52:19.733 回答