我只是在学习 sizers 并且对如何实现这一点感到有些困惑。
如果我在一个框架中有一个水平框 sizer 并向其添加两个按钮(每个按钮的比例为“1”),那么它们都将拉伸以占据 sizer 的整个水平宽度(等于框架的整个水平宽度) ) 并均匀分布(参见下面的示例 1)。
示例 1 代码:
wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "Frame");
wxPanel* panel = new wxPanel(frame, wxID_ANY);
wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
wxButton* buttonOk = new wxButton(panel, wxID_OK, "Ok");
wxButton* buttonCancel = new wxButton(panel, wxID_CANCEL, "Cancel");
buttonSizer->Add(buttonOk, 1, wxALL, 10);
buttonSizer->Add(buttonCancel, 1, wxALL, 10);
panel->SetSizerAndFit(buttonSizer);
frame->Show();
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望这些按钮保持其原始大小(不被拉伸),但仍然均匀分布在框架中,并且仍然在每个 wxSizerItem 内水平居中怎么办?也就是说,水平 sizer 的两个“列”都占据了对话框的一半,并且每个按钮都在这些列中的每一列中居中?我将如何做到这一点?这是一张图。按钮应该是它们的默认大小。
______________________________________
| | Button 1 | | Button 3 | |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
以下代码不起作用:
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
Run Code Online (Sandbox Code Playgroud)
小智 5
一种方法是使用拉伸垫片:
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |