wxWindow автоматически подгоняется к размеру родительского окна

Как я могу сделать wxGrid (наследуется после wxScrollerWindow -> wxWindows ->...) размер объекта соответствует родительскому wxPanel размер? Я старался Fit метод, но это не работает.OnInit метод:

bool MyApp::OnInit()
{
    wxFrame * win = new wxFrame(NULL, -1, _T("App"), wxPoint(300,300), wxSize(400,300), wxDEFAULT_FRAME_STYLE);
    wxPanel * panel = new wxPanel(win, -1);
    wxGrid * grid = new wxGrid(panel, -1, wxPoint(5,5), wxSize(300,200));
    grid->SetDefaultColSize(120);
    grid->SetDefaultRowSize(55);
    grid->SetRowLabelSize(55);
    grid->SetColLabelSize(25);
    grid->CreateGrid(2,6,wxGrid::wxGridSelectCells);
    grid->Fit();
    win->Show();
    return true;
}

MyApp наследует после wxApp,

1 ответ

Решение

Вы можете использовать sizer:

wxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
// expand contents, add 5px border on all sides:
sizer->Add(grid,1,wxEXPAND|wxALL,5);
panel->SetSizer(sizer);

Когда размер wxFrame изменяется (как и при первом показе), он автоматически изменяет размеры своего единственного (прямого) дочернего окна (панели), чтобы соответствовать его размеру клиента. Sizer панели изменит размер сетки.

Другие вопросы по тегам