在不拉伸的情况下在 wxBoxSizer 的整个方向上分布和居中项目
Distribute and centre items over wxBoxSizer's full orientation without stretching
我刚开始学习 sizer,对如何实现它有点困惑。
如果我在框架中有一个水平框大小调整器并向其添加两个按钮(每个按钮的比例为“1”),那么它们都会拉伸以占据大小调整器的整个水平宽度(等于整个框架的水平宽度)并均匀分布(参见下面的示例 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();
但是,如果我希望这些按钮保持它们的原始大小(不被拉伸),但仍然均匀分布在框架中,而且仍然在每个 wxSizerItem 内水平居中怎么办? IE。以便水平尺寸调整器的两个“列”占据对话框的一半,并且每个按钮都在这些列的每一列中居中?我将如何做到这一点?这是一张图。按钮应该是它们的默认大小。
______________________________________
| | Button 1 | | Button 3 | |
--------------------------------------
以下代码不起作用:
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
一种方法是使用拉伸垫片:
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();
我刚开始学习 sizer,对如何实现它有点困惑。
如果我在框架中有一个水平框大小调整器并向其添加两个按钮(每个按钮的比例为“1”),那么它们都会拉伸以占据大小调整器的整个水平宽度(等于整个框架的水平宽度)并均匀分布(参见下面的示例 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();
但是,如果我希望这些按钮保持它们的原始大小(不被拉伸),但仍然均匀分布在框架中,而且仍然在每个 wxSizerItem 内水平居中怎么办? IE。以便水平尺寸调整器的两个“列”占据对话框的一半,并且每个按钮都在这些列的每一列中居中?我将如何做到这一点?这是一张图。按钮应该是它们的默认大小。
______________________________________
| | Button 1 | | Button 3 | |
--------------------------------------
以下代码不起作用:
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
一种方法是使用拉伸垫片:
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();
buttonSizer->Add(buttonCancel, 0, wxALL, 10);
buttonSizer->AddStretchSpacer();