Создание редактируемой блок-схемы в Qt/C++

Я работаю над созданием редактируемой потоковой диаграммы, и у меня много концептуальных проблем с Qt. Я пробовал много разных способов реализации классов, начиная от QTreeWidget, QTableWidgetи используя просто кучу легких QPushButtons,

В идеале я хотел бы иметь настройки, где я могу щелкнуть правой кнопкой мыши на каждом фрагменте потока и редактировать его. В дополнение к наличию функции перетаскивания, чтобы изменить порядок объектов в потоке. Попытка найти класс / группу классов, которые я могу использовать вместе, чтобы достичь этого, была трудной задачей.

Какие классы лучше всего подойдут для этого приложения; конкретно классы GUI? Фактическое содержание редактирования не должно относиться к графическому интерфейсу, который я ищу, к предложению или методам, которые я, возможно, пропустил. Помимо функциональности, это не должно выглядеть так красиво; прямоугольники и прямые линии будет достаточно.

До сих пор я знаю, как использовать и реализовывать contextMenus и обычные меню, содержащие все необходимые мне действия, но теперь мне нужно найти модель и представление, которые совместимы с моими планами и могут содержать данные. (Это легкая часть; для этого у меня есть свой собственный класс)

Я новичок в Qt и C++. (Не новичок в объектно-ориентированном программировании, только другой синтаксис и API.)

Вот такая схема, которую я ищу:

Или вы можете просто Google 'Блок-схема' (вырвано из контекста, и мне не нужны цвета)

Заранее спасибо. Я не нашел решения, которое я понимаю; или который использует жесткое кодирование Qt. Любые предложения приветствуются.

2 ответа

Решение

Существует пример сцены с диаграммой, которая использует каркас графического представления для создания блок-схем. Это приложение, в котором вы можете добавлять фигуры потоковых диаграмм и текст и соединять фигуры стрелками. Формы, стрелки и текст могут иметь разные цвета, и можно изменить шрифт, стиль и подчеркивание текста.

Вы можете взглянуть на код и увидеть, как создавать пользовательские графические элементы и обрабатывать события мыши и перемещения элементов.

Вы можете использовать библиотеку QCustomPlot. Он имеет поддержку прямоугольника и других фигурных элементов и линий и т. Д. Это просто облегчит вашу работу.

http://www.qcustomplot.com/

Другие вопросы по тегам