【问题标题】:IS there a gui designer for wxwidgets in linux with Eclipse? [closed]在 Eclipse 中是否有用于 wxwidgets 的 gui 设计器? [关闭]
【发布时间】:2011-08-27 06:40:20
【问题描述】:

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

任何解决方案???

【问题讨论】:

  • 有Qt时为什么要使用wxWidgets?广泛使用两者后,我更喜欢 Qt。
  • 我更喜欢 wxWidgets,但我不建议人们在 Qt 问题上使用它。 IMO 这是非常无用的,大概每个使用 wxWidgets 的人都已经了解 Qt(这里的海报肯定是),无论您的意见如何,使用 wxWidgets 而不是 Qt 都有很好的理由(当然,也有理由做出不同的选择)。

标签: c++ user-interface wxwidgets designer


【解决方案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

这是一个sizer教程https://zetcode.com/gui/wxwidgets/layoutmanagement/

【讨论】:

    【解决方案2】:

    正如 ravenspoint 所指出的 - 对表单进行编码很可能要好得多。 这适用于 eclipse(对于那些感兴趣的人)。 run wx-config --cppflags 并将 directories/headers 粘贴到您的 Eclipse 项目的设置中 然后运行 wx-configure --libs 并将 -L-l 粘贴到您的 Eclipse 项目设置中 你准备好了。

    确保您还设置了 wx-config 显示的标志。

    【讨论】:

      【解决方案3】:

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

      你可以找到它here

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

      【讨论】:

        【解决方案4】:

        如果您正在寻找带有可视化表单编辑器的 IDE,那么正确的方法是 Code::Blocks。它集成了 wxSmith 插件。以这种方式工作是无缝的。 我不知道 Eclipse 是否有一些插件,但是 Eclipse + wxFormBuilder 对我来说是最好的选择之一。

        【讨论】:

          【解决方案5】:

          wxFormBuilder 很不错。它很稳定,并且支持大多数标准小部件。

          【讨论】:

            【解决方案6】:

            Code::Blockswxsmith 插件值得一试。这意味着切换 IDE,但 C::B 就像 Eclipse 一样是跨平台的。

            【讨论】:

              【解决方案7】:

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

              【讨论】:

              • wxGlade 不适合我。我不喜欢界面和他的工作方式。
              猜你喜欢
              • 1970-01-01
              • 2010-09-06
              • 2023-03-13
              • 2013-03-20
              • 2010-09-09
              • 1970-01-01
              • 1970-01-01
              • 2010-10-22
              • 2011-02-03
              相关资源
              最近更新 更多