我想使用C ++和wxWidgets构建一个GUI应用程序。 问题是我找不到要使用GUI(表单设计器)的IDE。我希望eclipse有一些像QT设计师这样的东西。
任何解决方案???
答案 0 :(得分:4)
wxFormBuilder非常好。它很稳定,并且支持大多数标准小部件。
答案 1 :(得分:2)
虽然我不确定是否与Eclipse集成,但您可以运行wxGlade来设计接口,然后导出代码。
答案 2 :(得分:2)
wxsmith的Code::Blocks插件值得一试。这意味着要切换IDE,但C :: B就像Eclipse一样是跨平台的。
答案 3 :(得分:1)
正如ravenspoint指出的那样 - 对表单进行编码很可能要好得多。
这对eclipse很有效(对于那些感兴趣的人)。
run wx-config --cppflags
并将directories/headers
粘贴到您的eclipse项目设置中
然后运行
wx-configure --libs
并将-L
和-l
粘贴到您的eclipse项目设置中
你准备好了。
确保您还设置了wx-config显示的标志。
答案 4 :(得分:0)
答案 5 :(得分:0)
如果您正在寻找具有可视化表单编辑器的IDE,那么 Code :: Blocks 。它集成了 wxSmith 插件。以这种方式工作是无缝的。 我不知道Eclipse是否有一些插件,但 Eclipse + wxFormBuilder 是我最好的选择之一。
答案 6 :(得分:0)
IMO应该避免使用这种“表单设计器”工具。对于那些不知道自己在做什么的人来说,它们就像拐杖一样。问题在于它们产生了大量用户不理解的代码。它们非常适合快速开发玩具应用的快速原型。但是,有一天,您的一个应用程序可能会成长为需要维护的成功产品。你猜怎么着?这些工具是有限的和有缺陷的,不能用于维护任何真正的复杂性或复杂性的GUI。因此,该工具生成的所有无法维护的代码都必须由使用该工具的人重写,因此没有学习如何编写GUI代码!
这个过程发生在我身上好几次,早在GUI首次流行时。然后我了解到学习如何编写GUI代码是无可替代的,唯一的方法就是卷起袖子并编写代码。
我理解为什么表单构建器工具如此受欢迎。许多GUI框架是代码的主要难题:需要大量的代码指定每个最后一个控件的左上角和右下角像素位置 - 所有这些都必须在任何移动时改变。 (这里想到MFC和.NET)
这就是wxWidgets得分很高的地方。如果您学习使用 sizer ,则无需再次指定像素位置。所以,这是我对原始问题的回答:避免所有这些表单构建器工具质量可疑,并且与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
这是一个sizer教程http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/