wxWidget какая кнопка (wxButton) была нажата? - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь создать массив кнопок с помощью этого кода

for(int i = 0; i < 10; i++)
{
    wxButton *btn_random = new wxButton(this, wxID_ANY, _T("Button " + std::to_string(i)), wxPoint(250, 10*i + 10*i), wxSize(60, 25), 0);

    btn_random->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &MyFrame::OnPressed, this);
}

В функции OnPressed (wxCommandEvent & event) я могу получить уникальный идентификатор кнопки, но я хочу изменить и изменитькнопка внутри функции OnPressed. Как мне это сделать?

Кроме того, я прочитал, что можно использовать wxWindow при использовании wxWindow :: GetWindowById (id), но я не могу заставить этот метод работать.

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете использовать event.GetEventObject(), чтобы получить объект, который сгенерировал событие. Однако вам нужно будет (dynamic_ -) привести его к правильному типу. Если вы предпочитаете избегать этого, вам нужно использовать фиксированные идентификаторы, например, MY_BUTTON_OFFSET + i и хранить указатели кнопок где-нибудь, а затем использовать event.GetId() - MY_BUTTON_OFFSET в качестве индекса для их получения.

PS Ничего общего с вашимвопрос, но wxEVT_COMMAND_BUTTON_CLICKED является длинным и громоздким и существует для совместимости только в настоящее время, просто используйте вместо него wxEVT_BUTTON.

...