4

我是个盲人,我很难做出好看的 guis。这真的让我很沮丧,因为虽然我是一个有能力的开发人员,但我无法独自完成项目,因为我无法制作前端。我想知道你们中是否有人知道一些可以产生专业外观的 gui 的自动解决方案?它们不必花哨,大多数时候我们都在谈论基本的表单/向导风格的布局。我基本上需要避免指定像素高度、宽度和位置。我需要一些东西来弄清楚如何使事物在大小和位置方面相互匹配,调整大小等等。我的主要目标平台是 Windows。我之前和 WxWidgets 合作过并且非常满意,但是我需要聘请另一个人来做我不能长期做的设计。我写代码没问题,

任何意见,将不胜感激。

4

2 回答 2

2

我怀疑是否有完美的替代品可以替代视力敏锐、对工作充满热情并且有大量时间致力于拖放、推拉 GUI 小部件直到一切正常的人。

但是,如果您对完成工作的工作日解决方案感到满意,那么我认为 wxWidgets sizers 做得很合理。你熟悉这些吗?指定您希望在小部件周围留出多少空间,以及您希望它们是垂直排列还是水平排列。现在您所要做的就是将您的小部件添加到 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,无需任何推或拉

在此处输入图像描述

这是一个介绍性的,相当粗糙的教程http://neume.sourceforge.net/sizerdemo/

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

于 2012-10-31T18:39:21.503 回答
0

我不确定你所说的盲目(字面或比喻)是什么意思,但我会假设后者。没有什么可以替代想象力。您的想象力将永远是您想要实现的目标。一旦你想到了它,你就可以在纸上或使用像 skencil 这样的东西来画它。

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

如果您想聘请 Vadim Zeitlin 拥有这么好的公司的人,请考虑支持另一位核心开发人员。

  1. wxFormBuilder
  2. 对话块
  3. wxDevC++ 设计器
  4. Code::Block 的 wxSmith
  5. XRCed 设计师
  6. wxDesigner
  7. wxGlade
  8. wxCrafter(处于测试阶段)
于 2012-10-31T17:32:38.183 回答