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

我现在正在学习 QtQuick 2.0 并且我已经阅读了 Overview of painting in Qt 5 。我想知道在 QtQuick 上使用 QPainter 的真正好处是什么。QtQucik 2.0 不再使用 QGraphicsView 作为其后端(它直接使用 OpenGL 上下文)

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

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

因此,问题是:

  • QtQuick 真的是“ future ”技术吗?如果可能,我应该使用它吗?我将来会从中受益吗?或者它是用 QPainterQGraphicsView 做同样事情的简单“另一种”方式?
  • QWidgets 的可能性真的比 QtQuick 2.0/PySide 高吗?
  • PyQt 是更适合开发这种应用程序还是我应该坚持使用 QtQuick/PySidePyQT
  • 最佳答案

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

    1), 2) 很难回答——这取决于。对于具有类似 eclipse 的复杂 UI 的桌面应用程序,在 QtQuick 中执行所有操作实际上并不可行。我会留在那里的小部件。在 QtQuick 中重新实现 Eclipse 将是一项艰巨的任务,最终会导致几乎不可用的 UI,与桌面无法很好地融合。如果你想要动画的、自定义的 UI,那么我会去 QtQuick。它是完成这项工作的正确工具,在 QWidget/plain QGraphicsView 中模仿它会很痛苦。

    关于QtQuick 2.0 与 QGraphicsView (QPainter),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14554415/

    10-09 07:21