节点图编辑器布局算法

时间:2012-12-13 12:23:44

标签: c++ qt graph

我非常想做这里所要求的事情:

http://www.qtcentre.org/threads/45028-Designing-a-Node-Editor-(Hint-Blender-Node-Editor)

这基本上是使用Qt的搅拌器样式节点编辑器。使用可以拖放的圆圈创建rects非常简单(参见下图)。

我遇到的问题是如何连接节点之间的圆圈算法。另外我不知道如何使用QGraphicsItem API有效地绘制它?我见过QPainter :: cubicTo(),看起来可能就是这样吗?

我认为它以某种方式设法找到一条无重叠的路径?但它还必须处理它必须重叠的情况?

如果算法做得不好,用户能够移动这些线路怎么样?我不认为使用QPainter :: cubicTo()实现这很简单,因为你只能移动曲线控制点?

enter image description here

2 个答案:

答案 0 :(得分:2)

  

我认为你不会让任何人在这里发布完整代码的代码。

好吧,我是志愿者 - 以防万一有人还需要这样的图书馆。

它是在QGraphicsView之上实现的基于Qt的节点编辑器。 库使用者定义数据模型,其余部分由节点编辑器完成。 一些功能:

  • 模型 - 视图方法。
  • 模型描述数据类型,输入和输出的数量以及可选的嵌入式QWidget。
  • 可以将场景保存到文件中。

其余的类似项目要么没有完成,要么不再支持或缺少某些功能。

https://github.com/paceholder/nodeeditor enter image description here

答案 1 :(得分:1)

我建议您在不考虑重叠的情况下实施它,但可以覆盖连接线的绘制方式。

看起来在Qt论坛上有一些很好的回复。我认为你不会让任何人在这里发布完整代码的代码。

也许看看Qt演示图形视图/弹性节点 - 演示的代码可以作为起点使用,但从那里到Blender节点编辑器这样做是很多工作

要看的另一个节点编辑器是SynthEdit或Synth Maker(有一个很好的)。