我现在正在用 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 ”技术吗?如果可能,我应该使用它吗?我将来会从中受益吗?或者它是用 QPainter
和 QGraphicsView
做同样事情的简单“另一种”方式? QWidgets
的可能性真的比 QtQuick 2.0
/PySide
高吗? PyQt
是更适合开发这种应用程序还是我应该坚持使用 QtQuick
/PySide
和 PyQT
? 最佳答案
如果您想将 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/