2011-05-17 55 views
6

我想用C++和wxWidgets構建一個GUI應用程序。 問題是,我無法找到使用GUI(窗體設計器)的IDE。我希望日食有像QT設計師那樣的東西。是否有一個gui設計器,用於Eclipse中的wxwidgets?

任何解決方案???

+0

爲什麼在有Qt時使用wxWidgets?經過廣泛使用,我非常喜歡Qt。 – 2011-06-30 17:52:17

+5

我更喜歡wxWidgets,但我不建議人們在Qt問題上使用它。海事組織這是非常無益的,大概每個人都使用wxWidgets已經意識到Qt(這裏的海報肯定是),無論你的意見如何,使用wxWidgets比Qt有很好的理由(當然也有理由做出不同的選擇)。 – 2013-04-03 13:53:08

回答

2

雖然我不確定是否與Eclipse集成,但您可以運行wxGlade來設計接口,然後導出代碼。

+0

wxGlade不適合我。我不喜歡界面和他的工作方式。 – 2011-05-17 14:30:17

2

wxsmith插件值得檢查。這將意味着切換IDE,但C :: B與Eclipse一樣是跨平臺的。

0

Philasmicos爲Windows和Linux提供免費的wxWidgets GUI設計器。

你可以找到它here

我不知道,爲什麼它是隻在德國網站。

0

如果您正在尋找一個帶有可視化表單編輯器的IDE,請按照以下步驟操作:Code :: Blocks。它已經集成了wxSmith插件。以這種方式工作是無縫的。 我不知道Eclipse是否有一些插件,但是Eclipse + wxFormBuilder是我最好的選擇之一。

1

IMO應該避免使用這種'表單設計器'工具。對於不知道自己在做什麼的人來說,他們就像柺杖一樣。這個障礙是他們產生了大量用戶不理解的代碼。它們非常適合快速開發玩具應用的快速原型。但是,有一天您的一個應用程序可能會成長爲需要維護的成功產品。你猜怎麼了?這些工具是有限的和錯誤的,並且不能用於維護任何真正複雜或複雜的GUI。因此,由該工具生成的所有不可維護的代碼必須由已使用該工具的人重寫,因此尚未學習如何編寫GUI代碼!

這個過程發生在我身上好幾次,早在GUI首次流行的時候。然後我瞭解到,學習如何編寫GUI代碼是不可替代的,唯一的辦法就是捲起袖子寫代碼。

我明白爲什麼表單構建工具非常流行。許多GUI框架是編碼的主要難點:需要大量代碼來指定每個最後一個控件的左上角和右下角像素位置 - 每當任何東西移動時都必須更改所有這些位置。 (MFC和.NET的春天在這裏)

這是wxWidgets得分很高的地方。如果您學會使用sizers,那麼您再也不必指定像素位置。所以,這是我對原始問題的回答:避免所有這些表單構建器的工具質量可疑,與Eclipse有問題的集成,但是學習使用sizer,以便您可以直接在Eclipse編輯器窗口中編寫GUI。

作爲一個簡單的例子,這裏是一個表單的代碼。

wxPanel * panel = new wxPanel(this,-1,wxPoint(-1,-1),wxSize(1000,1000)); 

wxSizerFlags szrflags(0); 
szrflags.Border(wxALL,5); 

wxBoxSizer * szrCRUDForm = new wxBoxSizer(wxVERTICAL); 

wxFlexGridSizer * szr = new wxFlexGridSizer(2,1,1); 

wxStaticText * field1text = new wxStaticText(panel,-1,"Entry Field #1"); 
wxTextCtrl * field1ctrl = new wxTextCtrl(panel,-1,"    "); 
wxStaticText * field2text = new wxStaticText(panel,-1,"Second Entry Field"); 
wxTextCtrl * field2ctrl = new wxTextCtrl(panel,-1,"    "); 
wxStaticText * field3text = new wxStaticText(panel,-1, 
    "A very big entry field\n" 
    "with a lot of description\n" 
    "Spread over several long lines of text"); 
wxTextCtrl * field3ctrl = new wxTextCtrl(panel,-1,"",wxPoint(-1,-1), 
              wxSize(600,-1)); 
wxStaticText * field4text = new wxStaticText(panel,-1,"Yet another Field"); 
wxTextCtrl * field4ctrl = new wxTextCtrl(panel,-1,"    "); 

szr->Add(field1text,szrflags); 
szr->Add(field1ctrl,szrflags); 
szr->Add(field2text,szrflags); 
szr->Add(field2ctrl,szrflags); 
szr->Add(field3text,szrflags); 
szr->Add(field3ctrl,szrflags); 
szr->Add(field4text,szrflags); 
szr->Add(field4ctrl,szrflags); 

wxBoxSizer * szrButtons = new wxBoxSizer(wxHORIZONTAL); 
szrButtons->Add(new wxButton(panel,-1,L"CREATE"),szrflags); 
szrButtons->Add(new wxButton(panel,-1,L"READ"),szrflags); 
szrButtons->Add(new wxButton(panel,-1,L"UPDATE"),szrflags); 
szrButtons->Add(new wxButton(panel,-1,L"DELETE"),szrflags); 

szrCRUDForm->Add(szr); 
szrCRUDForm->Add(szrButtons); 

SetSizer(szrCRUDForm); 
Produces the following GUI, without requiring any pushing or pulling 

產生如下的GUI

enter image description here

這裏是分級機教程http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/

1

由於ravenspoint表示 - 這是最有可能更好的代碼的形式。 這對eclipse(對於那些感興趣的人)來說效果很好。 run wx-config --cppflags並粘貼directories/headers到Eclipse項目的設置 然後運行 wx-configure --libs並粘貼-L-l到Eclipse項目設置 ,你準備好去。

確保您還設置了由wx-config顯示的標誌。

相關問題