I am interested in finding a good c++ library (or base code upon which to create one) to draw interactive connected graph components in Qt.
By connected graph component, I mean graphs whose nodes are components with input and output sections in the style of graph nodes in Blender Node Editor or Grasshopper, see example.
By interactive, I mean that I need to be able to access the component position and locations to let the user select and interact with them.
My requirements:
- for Qt in C++
- least amount of external dependencies (best would be just a header library)
- support for automatic layout (or semi-automatic, the nodes being set, the edges having to be connected automatically)
- interactivity-enabled (i.e. not just an image output, most likely based on QGraphicsScene)
My current implementation is using GraphViz with QGV but it only support simple component nodes (no specific input / output elements). While GraphViz supports record and html elements, QGV doesn't and it looks like a sufficient hassle to implement it within a fork of QGV correctly given the constraints from GraphViz that I wonder if there is no better choice, trying to not use GraphViz.
I could also be fine with a simple non-graphics library that does the layout given size constraints and relative position constraints (the component blocks have a fixed size, the input/output nodes positions are fixed given the location of the component block).