可扩展的 wxSizer 取决于窗口大小

金枪鱼

我想使用 wxWidgets 制作一个包含一些按钮和面板的布局。问题是我无法在其他帧的中心创建可扩展的 wxSizer。

我尝试使用一些 wxWidgets 组件,如 wxBoxSizer、wxFlexGridSizer 等。实现这种布局有什么好的建议吗?

窗口的简单表示是这样的: 在此处输入图片说明

变异的

您需要将其视为多个嵌套块。

  1. 在最高级别,您有 3 个水平排列的:右矩形、中心矩形和左矩形。为了实现这一点,您需要一个wxBoxSizer水平方向。
  2. 在第二层,即中心矩形,您有 3 个垂直排列的:顶部矩形、中心矩形和底部矩形。您将需要一个wxBoxSizer垂直方向。
  3. 为了使中心扩展以填充空间,您需要使用该proportion参数。

这是一个代码片段示例:

wxBoxSizer* rootsizer = new wxBoxSizer(wxHORIZONTAL);

//TODO: the right side control is whatever you need it to be
wxPanel* rightPanel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, rightPanelSize);
//NOTE the use of 0 as the proportion; this means the right panel will NOT expand
//horizontally; it is fixed in size.  The wxEXPAND flag means it will expand vertically
//to fill
rootsizer->Add(rightpanel, 0, wxEXPAND, 0);

//Our center sizer to contain our center controls
wxBoxSizer* centersizer = new wxBoxSizer(wxVERTICAL);
//NOTE the use of 1 as the proportion; this means the center panel will expand HORIZONTALLY to fill all available space
rootsizer->Add(centersizer, 1, wxEXPAND, 0);

//TODO: whatever control goes on the left
wxPanel* leftpanel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, leftPanelSize);
//Proportion is again 0 to prevent expanding horizontally
rootsizer->Add(leftpanel, 0, wxEXPAND, 0);

//Now the second level

//TODO: whatever control goes on the top
wxPanel* toppanel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, topPanelSize);
//Proportion is 0 to prevent expanding VERTICALLY (because we are now in the center sizer
//which is a vertical sizer
centersizer->Add(toppanel, 0, wxEXPAND, 0);

//Our final depth, the centermost control, is set to a proportion of 1 to fill the space
//vertically
//TODO: whatever is your center control
wxPanel* centerpanel = new wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize);
centersizer->Add(centerpanel, 1, wxEXPAND, 0);

//And then the bottom control at proportion 0
wxPanel* bottompanel= new wxPanel(parent, wxID_ANY, wxDefaultPosition, bottomPanelSize);
centersizer->Add(bottompanel, 0, wxEXPAND, 0);

通过组合多个级别的 sizerwxEXPAND并正确分配proportion,您可以获得适当的灵活性。您只需要学会从仅在一个方向上扩展和收缩的控件组来看待它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSRS自动扩展列取决于参数-Tablix

来自分类Dev

IPA的大小取决于哪些因素?

来自分类Dev

fftw输出取决于输入的大小吗?

来自分类Dev

对象的大小取决于其读取的内容

来自分类Dev

或突然变慢,取决于阵列大小

来自分类Dev

启用/禁用可排序取决于元素组

来自分类Dev

动作取决于窗口大小jQuery

来自分类Dev

固定的Chrome扩展窗口大小

来自分类Dev

CGGlyph是否取决于字体大小?

来自分类Dev

如何编写内容取决于某个扩展字段的代码段?

来自分类Dev

HTML SELECT的大小取决于所选的选项

来自分类Dev

使CSS位置属性取决于窗口大小和平台

来自分类Dev

扩展功能缺少参数类型-它取决于什么?

来自分类Dev

Azure ARM模板取决于:如何引用VM扩展?

来自分类Dev

分页取决于窗口大小-查找每页项目数的方法

来自分类Dev

文件类型是否取决于文件扩展名?

来自分类Dev

如何使Chrome扩展程序弹出窗口可拖动?

来自分类Dev

扣除类型取决于大小C ++

来自分类Dev

如何使按钮,对象等的大小取决于窗口大小?

来自分类Dev

节点大小取决于度

来自分类Dev

SSRS自动扩展列取决于参数-Tablix

来自分类Dev

窗口大小不会扩展窗口小部件

来自分类Dev

如何创建图形窗口,其大小取决于导入文件中数据项的数量

来自分类Dev

防止重新调整窗口大小取决于分辨率

来自分类Dev

可滑动的标签导航,具体取决于屏幕尺寸

来自分类Dev

使用取决于鼠标位置的按钮来调整窗口大小

来自分类Dev

jQuery可排序元素取决于它们的属性

来自分类Dev

具有固定边框大小的可扩展SVG

来自分类Dev

当子列表的大小取决于数据值(种子和扩展)时,将列表拆分为子列表

Related 相关文章

热门标签

归档