Subclassing QGraphicsProxyWidget vs. QGraphicsWidget vs. QGraphicsItem to create custom graphic objects
-
Hi,
I am trying to implement a node editor GUI similar to the ones you can find in Blender, Houdini or Nuke, using the QGraphicsScene and QGraphicsView classes.
- A node is represented by a rectangle shape (QGraphicsPathItem/QGraphicsRectangleItem/QFrame or QDialog in a QGraphicsWidget or QGraphicsProxyWidget, etc..).
- The node has several connectors representing an input or an output.
- Outputs can be connected to inputs (QGraphicsPathItem/QGraphicsLineItem).
Something that could look similar to this (but a lot simpler for now):
!http://upload.wikimedia.org/wikipedia/commons/3/31/Blender3D_CreatingABumpMapCompositeNodes-2.49.png(Blender node graph screenshot)!I am confused about the various ways to achieve this. Many of the Qt Graphicsview examples directly subclass the QDialog class and add them to the scene with scene->addWidget(myNode). In the "Basic Graphics Layouts Example":http://qt-project.org/doc/qt-5.0/qtwidgets/graphicsview-basicgraphicslayouts.html--, a QGraphicsWidget is used instead. Yet some other examples directly subclass the QGraphicsProxyWidget class to create the node, in which they create a QDialog or a QFrame which they set as the proxy widget with setWidget(nodeWidget).
I'm confused!
1- What do you think would be the best way to go? Any advantages/disadvantages?
2- What is the difference between subclassing the QGraphicsWidget class and subclassing the QGraphicsProxyWidget class?
3- Any other suggestions?