我想用C++和wxWidgets構建一個GUI應用程序。 問題是,我無法找到使用GUI(窗體設計器)的IDE。我希望日食有像QT設計師那樣的東西。是否有一個gui設計器,用於Eclipse中的wxwidgets?
任何解決方案???
我想用C++和wxWidgets構建一個GUI應用程序。 問題是,我無法找到使用GUI(窗體設計器)的IDE。我希望日食有像QT設計師那樣的東西。是否有一個gui設計器,用於Eclipse中的wxwidgets?
任何解決方案???
的wxsmith插件值得檢查。這將意味着切換IDE,但C :: B與Eclipse一樣是跨平臺的。
wxFormBuilder很不錯。它很穩定,並且支持大部分標準小部件。
如果您正在尋找一個帶有可視化表單編輯器的IDE,請按照以下步驟操作:Code :: Blocks。它已經集成了wxSmith插件。以這種方式工作是無縫的。 我不知道Eclipse是否有一些插件,但是Eclipse + wxFormBuilder是我最好的選擇之一。
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
這裏是分級機教程http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/
由於ravenspoint表示 - 這是最有可能更好的代碼的形式。 這對eclipse(對於那些感興趣的人)來說效果很好。 run wx-config --cppflags
並粘貼directories/headers
到Eclipse項目的設置 然後運行 wx-configure --libs
並粘貼-L
和-l
到Eclipse項目設置 ,你準備好去。
確保您還設置了由wx-config顯示的標誌。
爲什麼在有Qt時使用wxWidgets?經過廣泛使用,我非常喜歡Qt。 – 2011-06-30 17:52:17
我更喜歡wxWidgets,但我不建議人們在Qt問題上使用它。海事組織這是非常無益的,大概每個人都使用wxWidgets已經意識到Qt(這裏的海報肯定是),無論你的意見如何,使用wxWidgets比Qt有很好的理由(當然也有理由做出不同的選擇)。 – 2013-04-03 13:53:08