QtQuick 2.0与QGraphicsView(QPainter)

时间:2013-01-28 01:52:23

标签: qt pyqt pyside qpainter qt-quick

我现在正在编写一个Python(PyQt / PySide)应用程序,它应该可视化并且应该可以编辑复杂的数据流图(如混合器中的节点)。另外我希望这些节点显示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次调用,但这真的很重要吗?我一直在寻找QPainterQGraphicsView)和QtQuick 2.0之间的任何benchamrks,但没有发现任何有趣的事情。

所以问题是:

  1. 真的QtQuick是未来的技术吗?如果可能,我应该使用它吗?将来我会从中受益吗?或者使用QPainterQGraphicsViewQWidgets进行相同操作的简单“另一种”方式?
  2. QtQuick 2.0的可能性是否真的高于PySide / PyQt
  3. QtQuick更适合开发此类应用,还是应该坚持PySide / PyQTQPainter

2 个答案:

答案 0 :(得分:1)

如果你想直接将UI与其他OpenGL元素嵌入,OpenGL最重要,特别是当你想在有限的硬件上进行平滑过渡,动画等时。

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

答案 1 :(得分:-1)

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

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

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

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