QtQuick 2.0与QGraphicsView(QPaint)

QtQuick 2.0与QGraphicsView(QPaint),qt,pyqt,pyside,qpainter,qt-quick,Qt,Pyqt,Pyside,Qpainter,Qt Quick,我现在正在用Python编写一个应用程序(PyQt/PySide),它应该是可视化的,并且应该能够编辑复杂的数据流图(比如blender中的节点)。另外,我希望这些节点显示opengl 3D对象(小型opengl场景,如节点上的按钮)、图像、控件等。 GUI也将是复杂的-它将允许细分为面板,并允许在每个面板中打开上下文(如Eclipse或Visual Studio) 我现在正在学习QtQuick 2.0,我已经阅读了。我想知道使用QtQuick而不是QPainter的真正好处是什么。 qtquc

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

我现在正在学习QtQuick 2.0,我已经阅读了。我想知道使用
QtQuick
而不是
QPainter
的真正好处是什么。
qtqucik2.0
不再使用
QGraphicsView
作为其后端(它直接使用
OpenGL
上下文)

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

当然,
qml
是声明性的,可以优化
OpenGL
调用,但这真的很重要吗?我在
QPainter
QGraphicsView
)和
QtQuick 2.0
之间搜索了很长时间,但没有发现任何有趣的地方

因此,问题是:

  • QtQuick是否真的是“未来的”技术?如果可能的话,我应该使用它吗?我将来会从中受益吗?或者,这是一种简单的“另一种”方法,可以用
    QPainter
    QWidgets
    完成相同的任务
  • QtQuick 2.0
    的可能性真的高于
    PySide
    /
    PyQt
  • QtQuick
    更适合开发此类应用程序,还是我应该坚持使用
    PySide
    /
    PyQT
    QPainter

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


    1) 很难回答,这要看情况而定。对于一个具有复杂的类似eclipse的UI的桌面应用程序来说,在QtQuick中做任何事情都是不可行的。我会留在那里。在QtQuick中重新实现Eclipse将是一项艰巨的任务,最终将导致难以使用的UI无法与桌面很好地融合。如果你想要动画,自定义用户界面,那么我会很快。这是一个适合工作的工具,在QWidget/plain QGraphicsView中模仿它会很痛苦。

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

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

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


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

    谢谢你,你能详细介绍一下“在
    QWidget
    /plain
    QGraphicsView
    中模仿它会很痛苦”吗?为什么我不能简单地用
    QGraphicsView
    绘制图形,然后设置动画。使用
    PySide
    /
    PyQt
    在我看来应该很简单。我错了吗?另外,你能告诉我为什么
    QGraphicsView
    在有限的硬件上使用OpenGL不如
    QtQuick 2.0
    ?它们之间的性能差异如此之大吗?QtQuick 2:QQ1的主要区别在于它使用了场景图:“痛苦”部分主要指的是小部件。在大多数用例中,如果将普通图形视图用于具有用户交互的“普通”UI控件,那么它将变得更加复杂:锚定交互上的动画转换,即QML是为其制作的。由于QQ1项目可以通过QDeclarativeItem轻松嵌入到Graphicscene/视图中,因此可以自由组合这些项目,因此这不是一个非此即彼的决定。我知道它使用scenegraph。我想我已经阅读了所有与QtQuick有关的内容。与
    QGraphicsView
    相比,此场景图非常流行,因此它是在有限硬件上运行的唯一选项?我理解声明性语言为我们提供了工具,可以通过锚定等快速制作动画,但编写自己的类和函数会给我带来类似的效果,不是吗?(我很抱歉提出如此深入的问题——我正试图深刻理解这些差异)