wxFlexGridSizer是一个从wxGridSizer派生的二维 sizer。
同列的宽度相同
同行的高度相同
行列可以通过AddGrowableRow(size_t idx, int proportion=0)和AddGrowableCol(size_t idx, int proportion=0)函数进行拉伸。
class LayoutFlexgridSizer:public wxFrame
{
public:
LayoutFlexgridSizer(const wxString& title);
};
LayoutFlexgridSizer::LayoutFlexgridSizer(const wxString& title)
:wxFrame(NULL,wxID_ANY,title,wxPoint(-1,-1),wxSize(-1,-1))
{
SetBackgroundColour(*wxLIGHT_GREY);//更改窗体背景颜色
wxFlexGridSizer *fgs = new wxFlexGridSizer(3,//行数
2,//列数
9,//行间距
25//列间距
);
wxStaticText *thetitle = new wxStaticText(this,-1,"Title");
wxStaticText *author = new wxStaticText(this,-1,"Author");
wxStaticText *review = new wxStaticText(this,-1,"Review");
wxTextCtrl *tcTitle = new wxTextCtrl(this,-1);
wxTextCtrl *tcAuthor = new wxTextCtrl(this,-1);
wxTextCtrl *tcReview = new wxTextCtrl(this,-1,""
,wxPoint(-1,-1)
,wxSize(-1,-1)
,wxTE_MULTILINE
);
fgs->Add(thetitle);
fgs->Add(tcTitle,1,wxEXPAND);
fgs->Add(author);
fgs->Add(tcAuthor,1,wxEXPAND);
fgs->Add(review);
fgs->Add(tcReview,1,wxEXPAND);
fgs->AddGrowableRow(0);//第1行可增长
fgs->AddGrowableRow(2);//第3行可增长
fgs->AddGrowableCol(1);//第2列可增长
// SetSizerAndFit(fgs);//wxFlexGridSizer可以单独使用
// 如果觉得控件与窗口边框没有间距不美观,则使用下面的代码即可。
wxBoxSizer *bsMain = new wxBoxSizer(wxHORIZONTAL);
bsMain->Add(fgs,1,wxEXPAND|wxALL,10);
SetSizerAndFit(bsMain);
Center();
}