C ++ wxWidgets: установить шрифт после создания виджета - PullRequest
0 голосов
/ 18 июня 2020

В общем, я обнаружил, что вы можете установить шрифт только до создания виджета, иначе шрифт не изменится, но мне нужно изменить шрифт после создания элемента, как я могу это сделать?

void MyMain::makeBtnPanel()
{
    btnPanel = new wxPanel(this, wxID_ANY);
    wxGridSizer* grid = new wxGridSizer(5, 4, 2, 2);

    // here is hidden code that is adding widgets to grid

    btnPanel->SetSizer(grid);
    sizer->Add(btnPanel, 5, wxEXPAND);
}


void MyMain::styleBtns()
{
    wxFont mainBtnFont(
        16,
        wxFONTFAMILY_DEFAULT,
        wxFONTSTYLE_NORMAL,
        wxFONTWEIGHT_EXTRALIGHT
    );
    btnPanel->SetFont(mainBtnFont);
}
* 1003 Функция *styleBtns не работает, но если я установил шрифт сразу после создания btnPanel (во 2-й строке функции makeBtnPanel), шрифт будет установлен.

конструктор класса:

MyMain::MyMain()
    : wxFrame(
        NULL,
        wxID_ANY,
        "Calculator",
        wxDefaultPosition,
        wxSize(322, 392)
    )
{
    sizer = new wxBoxSizer(wxVERTICAL);
    SetSizer(sizer);
    makeDisplayPanel();
    makeBtnPanel();
    styleBtns();
    setupMainFrame();
}

1 Ответ

0 голосов
/ 21 июня 2020

Омг, я такой тупой. Я не мог изменить шрифт, потому что устанавливал для шрифта пустые переменные. Я написал else if вместо if, и код не выполнялся, он не устанавливал эти переменные.

...