【问题标题】:wxwidgets resize sizers after hiding/showing child controlswxwidgets 在隐藏/显示子控件后调整大小
【发布时间】:2010-12-27 05:01:59
【问题描述】:

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

【问题讨论】:

    标签: resize wxwidgets children sizer


    【解决方案1】:

    我发现对我有用的解决方案是隐藏/显示包含面板的 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 2021-09-27
      • 2021-06-08
      相关资源
      最近更新 更多