This project implements a automate editor using Qt 4. One point of particular interest is the code for the graphical view of an automate.
Why, you may ask. That is because the view is a QGraphicsScene but this QGraphicsScene is implemented in a way that it can be used as a QAbstractItemView.
The Qt docs say:
what is special about this?
the code uses a QGraphicsScene on top of an QAbstractItemModel (in form of a QAbstractItemView). objects which are in my case 'nodes' and 'connections' are represented by the model. however to draw a connection in the QGraphicsScene/QGraphicsView we have to maintain two objects (start and end) and the code mentioned above handles this transparently. it even delegates changes to node names through the model (best use of model/view/controller mvc).
The best idea is to visualize the class dependencies by a graph:
In this graph one can see several things:
Back when i created the classes i tried to give them a semantic name. The GraphicsView is on of two view classes in my project and one can use several views editing the same automate. For instance 1graphicsView and 2treeViews (of which are all inheriting AbstractView).
This picture features the 'pelican' automate.
there is no online doxygen documentation right now. clone the repository and run doxygen yourself. to give you a brief overview hat this all is about, you can read this (outdated build)