Мне нужно нарисовать дерево с помощью Qt,
Я думал об использовании QGraphicsScene и QGraphicsItem для узлов. Но так как я хочу, чтобы узлы были подвижными, то как это лучше всего сделать для линий между узлами?
QGraphicsScene
QGraphicsItem
Есть предложения?
Thx.
Я предлагаю вам использовать QML для рисования подобных вещей (я ненавижу язык QML, но, к сожалению, в Qt будущее за рисованием высокопроизводительной графики, они усердно работают над этим, и Qt5 также будет более QML-ориентированным I Угадай). Для рисования линий вы можете использовать повернутые тонкие прямоугольники. См. Прямоугольник .
Я бы также реализовал дуги как элементы, в частности QGraphicsLine . Линия может проходить между центрами связанных узлов. Сохраняйте ссылку на инцидентные ребра в элементе узла, и во время перетаскивания узла обновляйте узлы линии с помощью:
edge->setLine(QLineF(node_center.x, node_center.y);