wxBoxSizer
这个布局控件允许我们把多个组件放在一行或者一列上,我们能在一个布局控件中放入另一个布局控件。
wxBoxSizer(int orient)
wxSIzerItem * Add(wxWindow * window, int proportion = 0, int flag = 0, int border = 0)
参数orient可以是wxVERTICAL或者wxHORIZONTAL。通过Add()方法添加组件到wxBoxSizer内,为了能够更好的理解它,我们需要看它的参数。
参数proportion定义了组件在指定的排列方向内自由缩放的比例,让我们假定有三个按钮,它们的proportion分别是0、1、2
它们被添加进一个水平布局控件
proportion = 0的按钮始终都不会改变,proportion = 2的按钮会比proportion = 1的按钮在水平尺寸上多缩放一倍的尺寸。
有了flag参数你能够进一步设置wxBoxSizer内的组件的行为,我们能够控制两个组件之间的边界距离,我们可以在两个组件之间填充一些空白像素。为了显示边框,我们需要定义哪个方向上的边框需要使用。我们能够使用|运算符把它们组合起来,例如wxLEFT | wxBOTTOM,我们能够下面这些标志中选择:
1.wxLEFT
2.wxRIGHT
3.wxBOTTOM
4.wxTOP
5.wxALL
上图中布局实现方法:
1、整体上控件布局分上下两个布局,也就是我们需要创建一个垂直方向上的BoxSizer
wxBoxSizer * v_sizer = new wxBoxSizer( wxVERTICAL );
2、在分析上部分的控件的布局,可以看出:静态文本、输入框、三个按钮在同一水平方向上,由此我们需要创建一个水平方向
上的BoxSizer布局管理器
水平方向
wxBoxSizer * h_sizer = new wxBoxSizer( wxHORIZONTAL );
3、然后把 h_sizer 布局器放到 v_sizer 布局管理器;
4、最后再把 wx.TextCtrl 控件放入v_sizer 布局管理器。
小技巧:控件一定要按需要布局的顺序放入BoxSizer布局器中。