在Eclipse中使用Eclipse有wiwidgets的gui设计师吗?

时间:2011-05-17 13:59:20

标签: c++ user-interface wxwidgets designer

我想使用C ++和wxWidgets构建一个GUI应用程序。 问题是我找不到要使用GUI(表单设计器)的IDE。我希望eclipse有一些像QT设计师这样的东西。

任何解决方案???

7 个答案:

答案 0 :(得分:4)

wxFormBuilder非常好。它很稳定,并且支持大多数标准小部件。

答案 1 :(得分:2)

虽然我不确定是否与Eclipse集成,但您可以运行wxGlade来设计接口,然后导出代码。

答案 2 :(得分:2)

wxsmithCode::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)

Philasmicos有一个免费的wxWidgets GUI Designer,适用于Windows和Linux。

你可以找到它here

我不知道,为什么它只出现在德国网站上。

答案 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

enter image description here

这是一个sizer教程http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/