Я заинтересован в поиске хорошей библиотеки С++ (или базового кода для ее создания) для рисования компонентов интерактивного связанного графа в Qt.
Под связным компонентом графа я подразумеваю графы, узлы которых являются компонентами с входными и выходными секциями в стиле узлов графа в Blender Node Editor или Grasshopper , см . пример .
Под интерактивным я подразумеваю, что мне нужно иметь доступ к положению и расположению компонентов, чтобы пользователь мог выбирать их и взаимодействовать с ними.
Мои требования:
Моя текущая реализация использует GraphViz с QGV, но поддерживает только простые узлы компонентов (без конкретных элементов ввода/вывода). В то время как GraphViz поддерживает элементы записи и html, QGV этого не делает, и выглядит достаточно хлопотным, чтобы правильно реализовать его в ответвлении QGV, учитывая ограничения GraphViz, и мне интересно, нет ли лучшего выбора, пытаясь не использовать GraphViz.
Я также мог бы справиться с простой неграфической библиотекой, которая делает макет с заданными ограничениями размера и ограничениями относительного положения (блоки компонентов имеют фиксированный размер, позиции узлов ввода/вывода фиксированы с учетом местоположения блока компонента).
Может быть, слишком поздно, но все же вот библиотека, которую я разрабатываю для редактирования графа узлов общего назначения.
https://github.com/paceholder/nodeeditor
Ключевая особенность:
QGraphicsScene
Посмотрите видео, чтобы увидеть, на что способна библиотека:
Александр Каспар
пейсмейдер
std::shared_ptr
для переноса пользовательских данных и передачи их следующей модели. Это требует некоторого выделения памяти и копирования общих указателей. Так или иначе, одному парню удалось сделать рендерер GLSL в реальном времени на основе этого Node Editor с дюжиной примитивов, которые выдавали 30-60 FPS ( github.com/v0q/CollaborativeResearchProject )Мойя