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

时间:2009-12-16 11:26:27

标签: resize wxwidgets children 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);
    }
}

1 个答案:

答案 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();
}