2012-12-13 56 views
0

我非常努力的事情在這裏問:節點圖形編輯器佈局算法

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

這基本上是使用Qt攪拌機式的節點編輯器。使用可拖放的圓創建矩形很容易理解(參見下圖)。

我遇到的問題是連接節點之間的圓圈的算法是如何工作的。此外,我不知道如何有效地使用QGraphicsItem API的繪製?我看過QPainter :: cubicTo(),看起來可能是要走的路嗎?

我認爲它設法找到一個沒有重疊的路徑?但它也必須處理它必須重疊的情況?

那麼如果算法做得不好,用戶能夠移動這些行呢?我不認爲使用QPainter :: cubicTo()實現這一點很簡單,因爲您只能移動曲線控制點?

enter image description here

+0

我猜攪拌機只是_assumes_沒有重疊,且用戶負責人認爲。 –

+0

即便如此,我想知道一個算法,它將盡最大努力不重疊。儘管這不是真的,但是例如在上面的圖像中,將左側的圖像連接到右側的圖像,它不會「穿過」中間節點,它會繞過它。 – paulm

+1

路由算法並不容易,最好留給人類。您可以爲此創建一個接口,以便邊緣由多個立方體組成,並且用戶執行路由。 –

回答

1

我建議你實現它不考慮重疊,但與重載連接線的繪製方式的可能性。

看起來在Qt論壇上有一些很好的回覆。我不認爲你會讓任何人在這裏發佈完整的代碼。

也許看看Qt演示圖形視圖/彈性節點 - 演示的代碼可以用作起點,但從那裏獲得類似於Blender節點的許多工作編輯。

看看的另一個節點編輯器是SynthEdit或Synth Maker(有很好的一個)。

+0

我來看看SynthEdit和Synth Maker,我不是要求代碼只是算法來避免重疊。我認爲像A *這樣的東西可能是我需要的東西? – paulm

2

我不認爲你會得到任何人在這裏發佈完整的代碼。

那麼,我是志願者 - 以防萬一有人仍然需要這樣的圖書館。

這是一個在QGraphicsView上實現的基於Qt的節點編輯器。 庫消費者定義數據模型,其餘部分由節點編輯器完成。 某些功能:

  • 模型視圖方法。
  • 模型描述數據類型,輸入和輸出數量以及可選的嵌入式QWidget。
  • 場景可以保存到文件。

其餘類似項目要麼沒有完成,不再支持或缺乏一些功能。

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