【问题标题】:Automatically generating guis?自动生成gui?
【发布时间】:2012-10-21 01:38:13
【问题描述】:

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

任何建议将不胜感激。

【问题讨论】:

    标签: windows user-interface wxwidgets frontend


    【解决方案1】:

    我怀疑是否有完美的替代品可以替代视力敏锐、对工作充满热情并且有大量时间致力于拖放、推拉 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/

    【讨论】:

    • 我不太了解sizer的工作原理,但我一定会研究您提供的代码以及教程。谢谢你的帮助!我将此标记为已接受的答案。
    【解决方案2】:

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

    然后您可以使用 wxWidgets 构建 GUI 的工具。那里很少有选项,其中一些如下所示。 如果你想要跨平台,我建议使用 wxFormbuilder 或 wxSmith,如果你只想要 Windows,我建议使用 wxDevC++。如果你能给几块钱,那么考虑支持 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(处于测试阶段)

    【讨论】:

    • 哦,这绝对是字面意思。我没有视力。谢谢你的链接,我去看看。
    • 恕我直言,那么您如何制作 GUI?它安静有趣。你有一些援助可能吗?你将如何在看不见的情况下看到它们?我很困惑!
    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 2011-06-12
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多