wxwidgets在隐藏/显示子控件后调整sizer大小

Kwa*_*aak 4 wxwidgets children resize sizer

我有一个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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Kwa*_*aak 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();
}
Run Code Online (Sandbox Code Playgroud)