Пытаюсь освоить графику в Qt.
Хочу написать программу, которая визуализирует бинарное дерево и позволяет делать с деревьями такие операции, как разделить дерево на 2 дерева, добавить/удалить элемент, слить 2 дерева в одно, ...
Собираюсь использовать QGraphics.
Не могу понять как должна выглядеть структура программы.
Класс Tree должен быть унаследован от QGraphicsItem
Каждый узел дерева (класс TreeNode) должен быть тоже унаследован от QGraphicsItem
Если делать так, то TreeNode должны создаваться через Tree. И их позиция должна быть зависима от позиции Tree.
Я попробовал сделать класс Tree и создал из него 2 QGraphicsEllipseItem:
Tree::Tree(QObject *parent) {
ellipse1 = new QGraphicsEllipseItem(0,0,10,10);
ellipse2 = new QGraphicsEllipseItem(10,10,20,20);
}
void Tree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) {
ellipse1->paint(painter, option, widget);
ellipse2->paint(painter, option, widget);
}
Но эти эллипсы не перемещаются, когда я делаю tree.setPos(x, y);
И вообще есть ощущение что это всё надо делать совсем не так, но я не могу понять как.
Как лучше реализовать визуализацию дерева?