簡體   English   中英

如何讓 sizer 擴展到整個 wxNotebook 頁面?

[英]How can I make a sizer expand to the whole wxNotebook page?

我有一個添加了兩個頁面的wxNotebook 每個頁面都使用wxFlexGridSizer來管理每個頁面上的各種小部件。

第一頁有三列小部件,第二頁只有兩列。 第一頁比第二頁寬。

筆記本被調整為最寬頁面(第一頁)的大小。 但是,在第二頁上,我也想讓 sizer 擴展以填充整個頁面。 相反,它只是調整大小以適應該頁面上的小部件。

所以我的問題是:我怎樣才能讓第二頁的尺寸擴大到整個筆記本的寬度,這是由第一頁的寬度決定的?

我曾嘗試調用父wxNotebookLayout() function ,但這沒有幫助。

編輯:

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);

您只需要進行 2 個小改動。 首先使用第二頁上的 flex grid sizer,您需要調用AddGrowableCol(1) 這意味着第二列可以展開。 (索引從 0 開始,因此第 1 列是第二列。)

其次,在添加旋轉控制雙精度時,您需要使用稍微不同的 sizer 標志。 例如,像

sizer->Add(value, wxSizerFlags(0).Expand().Border(wxRIGHT, 5));

這是您發布的帶有這兩個更改的代碼段:

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);
sizer->AddGrowableCol(1);
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, wxSizerFlags(0).Expand().Border(wxRIGHT, 5));
pageTwo->SetSizer(sizer);
notebook->AddPage(pageTwo, wxT("Page 2"));

topLevelSizer->Add(notebook);

將讓旋轉控件展開以占用所有剩余空間,同時匹配第一頁的邊框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM