@blackfishsql00

Как правильно привести тип QGraphicsItem?

Пытаюсь отрисовать граф. Я взял за основу стандартный пример в 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 . Как правильно реализовать данный функционал?
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
mindtester
@mindtester
http://iczin.su/hexagram_48
сначала разделите в голове логику и отображение
Ответ написан
@blackfishsql00 Автор вопроса
Сейчас реализовал все с помощью флага и все данные (данные классов потомков) храню в одном классе. И каждый раз приходится проверять этот флаг. Данное решение не очень красивое.... Как сделать правильно !?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы