4

我有一个 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);
    }
}
4

1 回答 1

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();
}
于 2009-12-18T11:05:35.900 回答