目前在我的项目中,我有一个面板,其中的内容如下所示:
- 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教程,唯一的结论是我需要编写自己的sizer,我希望我遗漏了一些东西,我不必这样做。