目前在项目中,我与他提出了这样的事情面板:wxWidgets的:尺寸仪和浪费的空间
- wxBoxSizer(wxVertical)
- wxSearchControl(wxExpand)
- wxListControl(wxExpand )
- wxBoxSizer(wxHorizontal,wxALIGN_CENTER)
- wxButton(wxALL)
- wxButton(wxALL)
的问题是,当所述面板处于展开它创建浪费的按钮在哪里,也发生相反的问题当面板被收缩,这意味着按钮下方空间在收缩wxListControl之前完全从视线中移除,这是不受欢迎的行为。期望的行为将如下所示:扩展时,我希望一切都达到它的'好大小',那么唯一会继续扩展的是wxListControl,当收缩wxListControl应该先收缩,直到它达到最小大小,然后按钮并且搜索控制应该合同。以下图片应该突出显示这些问题。
**
底部浪费的空间:http://i.stack.imgur.com/lsXOv.png
按钮是错位:http://i.stack.imgur.com/U50In.png
因此,这里是我的代码(仅编辑的宽度小,不好命名保存的所有内容):
lbxEntityList = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
wxLC_REPORT | wxLC_EDIT_LABELS | wxLC_HRULES,
wxDefaultValidator, wxT("Entity List Control"));
lbxEntityList->AppendColumn("Entities",wxLIST_FORMAT_LEFT, 80);
srchControl = new wxSearchCtrl(this, wxID_ANY, "", wxDefaultPosition,
wxDefaultSize);
#ifndef __WXMAC__
srchControl->ShowSearchButton(true);
#endif
srchControl->ShowCancelButton(false);
btn_RemoveEntity = new wxButton(this, wxID_ANY, wxT("Remove Entity"),
wxDefaultPosition, wxDefaultSize, 0);
btn_AddEntity = new wxButton(this, wxID_ANY, wxT("Add Entity"),
wxDefaultPosition, wxDefaultSize, 0);
sizer = new wxBoxSizer(wxVERTICAL);
wxBoxSizer* o = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(srchControl, wxSizerFlags().Expand().Border(wxALL, 10));
sizer->Add(lbxEntityList, wxSizerFlags().Expand().Border(wxALL, 10));
sizer->Add(o, 1, wxALIGN_CENTER, 5);
o->Add(btn_RemoveEntity, 0, wxALL, 5);
o->Add(btn_AddEntity, 0, wxALL, 5);
SetSizer(sizer);
Layout();
sizer->Fit(this);
我尝试过的唯一事情是不断尝试随机不同配置器在不同的配置在wxFormBuilder中使用不同的标志妄图使其工作,但这总是无果而终。我看过几个sizer教程,我得到的唯一结论是我需要编写自己的sizer,我希望我错过了一些东西,而且我不必那样做。