我有一个wxWindow。在那里我有一个wxBoxSize(垂直)。 sizer有3个子控件。
我希望能够隐藏三个子控件中的一个,并让sizer及其父控件自动调整大小。例如,当我隐藏sizer的一个子控件时,窗口减少200像素。
现在,我显示隐藏某些控件并调整窗口大小的方法如下所示:(硬编码,乱码)
void GenUIAanleverOptionsDialog::OnToggleButtonShowLabels( wxCommandEvent& event )
{
if(this->btnShowLabels->GetValue())
{
this->pnlInfoLabels->Show(true);
this->SetSize(this->GetSize().GetWidth(), 573);
}
else
{
this->pnlInfoLabels->Show(false);
this->SetSize(this->GetSize().GetWidth(), 294);
}
}
答案 0 :(得分:7)
我发现为我工作的解决方案是隐藏/显示包含该面板的Sizer。更改Sizer的可见性后,调用Sizer的方法Layout()是必要的。
然而,这也没有调整父窗口的位置,因此调用wxWindow的Fit()方法也是必要的。
最终代码:
void GenUIStatusAanleverFrame::OnToggleButtonShowLabels( wxCommandEvent& event )
{
if(this->btnShowLabels->GetValue())
{
this->sizerInfoLabels->Show(true);
this->sizerOverview->Layout();
}
else
{
this->sizerInfoLabels->Show(false);
this->sizerOverview->Layout();
}
this->Fit();
}