我有wxNotebook
两个添加的页面。每个页面使用一个wxFlexGridSizer
来管理每个页面上的各种小部件。
第一页有三列小部件,第二页只有两列。第一页比第二页宽。
笔记本被调整为最宽页面(第一页)的大小。但是,在第二页上,我也想让 sizer 扩展以填充整个页面。相反,它只是调整大小以适应该页面上的小部件。
所以我的问题是:我怎样才能让第二页的尺寸扩大到整个笔记本的宽度,这是由第一页的宽度决定的?
我试过调用Layout()
parent 的函数wxNotebook
,但这没有帮助。
编辑:
wxNotebook *notebook = new wxNotebook(this, wxID_ANY);
wxPanel* pageOne = new wxPanel(notebook, wxID_ANY);
wxFlexGridSizer* sizer = new wxFlexGridSizer(3);
wxSizerFlags flags = wxSizerFlags().Align(wxLEFT).Border(wxRIGHT, 5);
wxStaticText* label = new wxStaticText(pageOne, wxID_ANY, wxT("Label 1"));
sizer->Add(label, flags);
label = new wxStaticText(pageOne, wxID_ANY, wxT("Label 2"));
sizer->Add(label, flags);
wxSpinCtrlDouble* value = new wxSpinCtrlDouble(pageOne, wxID_ANY, wxT("50.0"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
sizer->Add(value, flags);
pageOne->SetSizer(sizer);
notebook->AddPage(pageOne, wxT("Page 1"));
wxPanel* pageTwo = new wxPanel(notebook, wxID_ANY);
sizer = new wxFlexGridSizer(2);
flags = wxSizerFlags().Align(wxLEFT).Border(wxRIGHT, 5);
label = new wxStaticText(pageTwo, wxID_ANY, wxT("Label 1"));
sizer->Add(label, flags);
value = new wxSpinCtrlDouble(pageTwo, wxID_ANY, wxT("50.0"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
sizer->Add(value, flags);
pageTwo->SetSizer(sizer);
notebook->AddPage(pageTwo, wxT("Page 2"));
topLevelSizer->Add(notebook);
this->SetSizerAndFit(topLevelSizer);