wxwidgets изменяет размеры размеров после скрытия / показа дочерних элементов управления - PullRequest
4 голосов
/ 16 декабря 2009

У меня есть окно wxWindow. Внутри у меня есть wxBoxSize (вертикальный). У классификатора есть 3 дочерних элемента управления.

Я хочу иметь возможность скрыть один из трех дочерних элементов управления и автоматически изменять размер 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 Ответ

7 голосов
/ 18 декабря 2009

Решение, которое я нашел работающим для меня, состояло в том, чтобы Скрыть / Показать 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();
}
...