wxFormbuileder中wxwidgets的布局控件(layout)的使用

        wxFormbuileder的初次使用者,尤其是那些习惯了在VC中用MFC的人,可能会对控件的布局功能很不习惯,因为你在添加了控件之后无法用拖拽的方法实现重新布局,不过自己摸索一下不难发现:这个快速开发工具是用布局控件来布局的。

        在wxFormbuileder中的layout(布局)选项卡可以选择不同的布局控件,只有在插入布局控件的前提下才能插入各种功能控件,而且这些布局控件也是不能调节大小的,如图。

 

 


         主要讲一下wxwidgets中各种布局控件的类型以及使用它们的方法,这对使用wxFormbuileder进行界面设计很重要。

 

wxBoxSizer

 

        将它的容器子元素进行横向或者纵向的排列(具体的排列方式在构造函数中指定),可以理解为最简单的布局控件,仅仅只限定排列的方向:



 

         可以调节参数是orient,可以控制内部功能部件的排列方式:水平(wxHORIZONIAL)还是垂直(wxVERTICAL):

 

       上面两张图是分别采用wxVERTICAL和wxHORIZONIAL参数的设计效果。

 

wxGridSizer

 

       布局控件可以以二维表的方式排列它的子元素,这个二维表的每个表格的大小都是相同的,都等于最长的那个表格的长度和最高的那个表格的高度。创建一个wxGridSizer需要指定它的行数和列数,以及一个额外的行间距和列间距。

 



       上图展示的是添加wxGridSizer控件,并设置为4列0行(rows=0,cols=4),将一个表格均分为4列,行间距和列间距参数(vgap,hgap)都设置为0。然后在wxGridSizer下添加四个wxBoxSizer控件,用于在不同的列中添加功能控件。

 

wxFlexGridSizer

 

        同样采用二维表来对其子元素进行布局,和wxGridSizer不同的是,它不要求所有的表格的大小都是一样的,只要求同一列上所有表格的宽度是相同的并且同一行上所有表格的高度是相同的,也就是说,行的高度或者列的宽度仅由这一行或者这一列上的子元素决定。另外还可以给行和列指定是否缩放,这意味着当整个布局控件的大小发生变化的时候,可以指定某些行或者列随着整个布局控件的缩放而缩放。

 


 

wxGridBagSizer

 

        这种布局控件用来模拟现实世界中的那种固定位置和大小的基于布局控件的布局。它将它的子元素按照一个虚拟的网格进行排列,不过子元素的位置是通过wxGBPosition对象指定的,对象的大小使用wxGBSpan指定,对象的大小不仅限于一个网格。

 



        首先在empty_cell_size里面设置每一个单元格的长和宽,添加功能控件之后在其属性框的gbitemsizer里面设置列号和行号,就能把该功能控件确定与固定的位置。

 

        综上所述,我们可以看到wx的布局控件十分讲究平均分布,所以对于一些非均分的页面布局就不是很方便。但是,wxFlexGridSizer控件为我们提供了一种利用内部功能部件尺寸来确定。

你可能感兴趣的:(wxwidgets学习)