自动生成guis?

时间:2012-10-31 14:47:27

标签: windows user-interface wxwidgets frontend

我是瞎子,我很难做出漂亮的guis。这真让我感到沮丧,因为虽然我是一名有能力的开发人员,但我无法自己完成项目,因为我无法制作前端。我想知道你们中是否有人知道一些能产生专业外观的自动解决方案吗?它们不一定要花哨,大多数时候我们都在讨论基本形式/ wizzard样式布局。我基本上需要远离指定像素高度,宽度和位置。我需要一些东西来弄清楚如何使尺寸和位置相互匹配,调整大小等等。我的主要目标平台是Windows。我以前和WxWidgets一起工作并且非常满意,但是我需要聘请另一个人去做我不能长期做的设计。我编写代码没有问题,我只是无法有效地弄清楚如何定位和设置表单上控件的大小。

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:2)

我怀疑对于一个有敏锐视力,对工作充满热情,有很多时间投入拖拽,推动和拉动GUI的小部件直到一切都如此的人来说,总有一个完美的替代品。

但是,如果您对完成工作的工作日解决方案感到满意,那么我认为wxWidgets sizer做了一个合理的工作。你熟悉这些吗?指定要在窗口小部件周围留出多少空间,以及是否要将它们垂直或水平排列。现在你要做的就是为sizer添加你的小部件,并且sizer会自动以一种相当不错的第一遍方式安排它们。

举个简单的例子,这是一个简单的表格。

代码:

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);

生成以下GUI,无需任何推或拉

enter image description here

这是一篇介绍性的,粗略的教程http://neume.sourceforge.net/sizerdemo/

这是更复杂的http://zetcode.com/tutorials/wxwidgetstutorial/layoutmanagement/

答案 1 :(得分:0)

我不确定盲人(文字或比喻)是什么意思,但我会假设后者。 没有想象力的替代品。你的想象力永远是你想要达到的目标。一旦你记住它,你可以用纸或使用像skencil这样的东西进行草绘。

然后,您可以使用这些工具使用wxWidgets构建GUI。很少有选项,其中一些如下所示。 我建议使用wxFormbuilder或wxSmith,如果你想要跨平台甚至wxDevC ++,如果你只想要Windows。如果您可以提供几美元,那么请考虑支持DialogBlocks由wxWidgets核心开发人员之一拥有。 wxCrafter看起来很有希望但仍处于测试阶段。

如果你想聘请某人Vadim Zeitlin有a nice company,请考虑支持其他核心开发人员。

  1. wxFormBuilder
  2. DialogBlocks
  3. wxDevC++ Designer
  4. Code::Block's wxSmith
  5. XRCed Designer
  6. wxDesigner
  7. wxGlade
  8. wxCrafter(在测试阶段)