wxWidgets之wxBoxSizer布局类
//创建最低层面板,垂直布局 wxPanel *topPanel=new wxPanel(this); wxBoxSizer *topSizer=new wxBoxSizer(wxVERTICAL);//垂直布局,可用wxHORIZONTAL水平布局替换。 topPanel->SetSizer(topSizer); //创建上中下三个面板,上下面板高度固定,宽度自由伸展,中间面板上下左右四个方向自由伸展 wxPanel *upPanel=new wxPanel(topPanel); upPanel->SetBackgroundColour(*wxBLACK);//黑色背景 wxPanel *centerPanel=new wxPanel(topPanel); centerPanel->SetBackgroundColour(*wxWHITE);//白色背景 wxPanel *bottomPanel=new wxPanel(topPanel); bottomPanel->SetBackgroundColour(*wxRED);//红色背景 topSizer->Add(upPanel,0,wxEXPAND); topSizer->Add(centerPanel,1,wxEXPAND|wxALL); topSizer->Add(bottomPanel,0,wxEXPAND);
wxWidgets盒布局是经常使用到的布局组件,就像HTML中的DIV一样,在HTML中DIV垂直方向放着很容易控制,一个个往下挨着,它们高度适应子元素高度,水平方向自由延伸,但是要把他们都水平放到一条线上,是需要一点点CSS功底的,wxBoxSizer垂直、水平方向布局也差不多的感觉。在wxBoxSizer中用Add方法的第二个参数来控制控件是否可以自由伸展来填充面板其它未占用的地方,第三个参数控制控件向哪个方向伸展,有上下左右四个方向,wxALL表示四个方向都可以伸展。
附效果图 <水平布局后的效果就是把下面的图片向左或者向右翻转90°的样子>