Пытаюсь отрисовать граф. Я взял за основу стандартный пример в QT
Elastic Nodes Example https://doc.qt.io/qt-5/qtwidgets-graphicsview-elas... и хочу его немного доработать следующим образом. В примере описан класс
class Node : public QGraphicsItem
и класс
class Edge : public QGraphicsItem
. Соответственно весь код завязан на данные 2 класса.
Не понимаю как реализовать следующее. Хочу сделать свои классы
class NodeСircle : public Node
и
class NodeSquare : public Node
. Внутри данных двух классов будут разные поля и своя логика работы с данными. Ребро может строиться между любыми вариантами данных классов (
NodeСircle <--> NodeСircle
,
NodeSquare <--> NodeSquare
,
NodeSquare <--> NodeСircle
и наоборот). Чтобы построить ребро между двумя объектами, получается нужно передавать указатель на базовый класс как-то ? Не понимаю как должен выглядеть тогда конструктор класса
Edge
??
И второй вопрос. Предположим уже есть нарисованный граф. Я правым кликом по элементу на сцены вызываю контекстное меню, допустим кликаю по
class NodeСircle : public Node
выбираю пункт "Преобразовать в квадрат" и чтобы на его месте появился уже элемент класса
class NodeSquare : public Node
. Как правильно реализовать данный функционал?