Пытаюсь отрисовать граф. Я взял за основу стандартный пример в 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 . Как правильно реализовать данный функционал?