我需要寫一個C++圖形用戶界面,使得用戶可以通過從工具欄中選擇若干塊,並把它們放入一個窗口,他們在他想要,然後一些順序連接使流程圖/管道程序運行流程圖。 (爲簡單起見,考慮每個塊的任務是打印一些數字,我的問題是GUI)C++流程圖/ GUI設計
有沒有人試過類似的東西/任何經驗?
是否有可能在WxWidget或任何其他圖形/窗口形式庫中製作這樣的GUI?
是否可以使用VTK來創建GUI?
你知道任何類似的開源工作嗎?
我需要寫一個C++圖形用戶界面,使得用戶可以通過從工具欄中選擇若干塊,並把它們放入一個窗口,他們在他想要,然後一些順序連接使流程圖/管道程序運行流程圖。 (爲簡單起見,考慮每個塊的任務是打印一些數字,我的問題是GUI)C++流程圖/ GUI設計
有沒有人試過類似的東西/任何經驗?
是否有可能在WxWidget或任何其他圖形/窗口形式庫中製作這樣的GUI?
是否可以使用VTK來創建GUI?
你知道任何類似的開源工作嗎?
我已經開發了幾個應用程序與GUI做這種事情。
我最喜歡的一個叫做VASE:用於創建佈局,設置參數和查看過程流模擬器結果的GUI。
這不是一個簡單的任務,但一旦你做了一個或兩個,還有,你可以重複使用很多的想法,它過得很快。
繪製連接對象的兩條最大挑戰(即使在VASE中,這個問題還沒有完全解決),並以易於恢復和重繪的格式存儲該佈局。
是否有任何特殊問題需要幫助?
如果你想要一個真正簡單的例子讓你開始,我已經重新實現了幾個基本特性(所有漂亮和乾淨,沒有版權限制) - 左鍵單擊選擇,拖動移動,右鍵單擊連接。
這裏是源代碼庫 - http://66.199.140.183/cgi-bin/vase.cgi/home
這裏是什麼樣子
我實現了一個簡單的連接器,我稱之爲的管道。爲了給你如何做這樣的東西風味,這裏是添加管在用戶右鍵點擊
/**
User has right clicked
If he right clicks on a flower
and there is a different flower selected
then connect the selected flower to the right clicked flower
if he right clicks on empty background
create a new flower
*/
void cVase::MouseRightDown(wxMouseEvent& event)
{
// find flower under click
iterator iter_flower_clicked = find(event.GetPosition());
// check there was a flower under click
if(iter_flower_clicked != end()) {
// check that we have a selected flower
if(! mySelected)
return;
// check that selected flower is different from one clicked
if(mySelected == (*iter_flower_clicked))
return;
// construct pipe from selected flower to clicked flower
myPipe.push_back(cPipe(mySelected, *iter_flower_clicked));
} else {
// no flower under click
// make one appear!
cFlower * pflower = Add();
pflower->setLocation(event.GetPosition());
}
// redraw everything
Refresh();
}
這裏是代碼繪製管道
/**
Draw the pipe
From starting flower's exit port to ending flower's entry port
*/
void cPipe::Paint(wxPaintDC& dc)
{
dc.SetPen(*wxBLUE_PEN);
dc.DrawLine(myStart->getExitPort(), myEnd->getEntryPort());
}
代碼您可以通過瀏覽源代碼存儲庫來查看其他wxWidgets代碼,將所有這些代碼結合在一起。
我不知道,例如,我可以使用WxWidget,GTK或VTK來製作這樣的GUI。我需要看一個非常簡單的程序示例來獲得一些想法。 – Hesam
非常感謝,感謝您的幫助。只是一個問題,以這種方式,有可能使這些塊之間的連接,特別是當我們有多端口時?既然你有經驗,你對wxart2d有什麼看法? http://www.wxart2d.org/moin – Hesam
@Hesam想知道您是否正在遵循我已添加到Vase GUI框架的增強功能? – ravenspoint
我認爲使用庫如wxArt2D比使用標準wxWidgets drawing classes更容易。 wxArt2D的wires sample看起來與您正在尋找的相似。
謝謝,是的,這是我想要的。我研究了wxArt2D/wires,但似乎沒有該庫的教程或介紹文檔。你有沒有試過使用wsArt2D? – Hesam
也許你可以試試一下叫做Flowchart to Code的小工具,你可以得到所需的流程圖,就像這樣。它可以在這裏下載:http://www.athtek.com/flowchart-to-code.html#.Ug4z29JPTfI
任何框架,你可以繪製形狀和數字將工作。 –
是的,可以一起使用VTK和wx。 –
@VZ:你知道任何可以給出一些基本想法的簡單例子嗎? – Hesam