wxWidget 按下了哪个按钮(wxButton)?
wxWidget which button (wxButton) was pressed?
我正在尝试使用此代码创建一个按钮数组
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)中我可以获得按钮的唯一Id,但是我想在OnPressed函数中更改和修改按钮。我该怎么做?
此外,我了解到在使用 wxWindow::GetWindowById(id) 时可以投射 wxWindow,但我无法使用此方法。
您可以使用 event.GetEventObject()
检索生成事件的对象。但是,您需要 (dynamic_
-) 将其转换为正确的类型。如果您想避免这种情况,则需要使用固定 ID,例如MY_BUTTON_OFFSET + i
并将按钮指针自己存储在某处,然后使用 event.GetId() - MY_BUTTON_OFFSET
作为检索它们的索引。
P.S。与你的问题无关,但 wxEVT_COMMAND_BUTTON_CLICKED
又长又笨重,现在只是为了兼容性而存在,只需使用 wxEVT_BUTTON
即可。
我正在尝试使用此代码创建一个按钮数组
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)中我可以获得按钮的唯一Id,但是我想在OnPressed函数中更改和修改按钮。我该怎么做?
此外,我了解到在使用 wxWindow::GetWindowById(id) 时可以投射 wxWindow,但我无法使用此方法。
您可以使用 event.GetEventObject()
检索生成事件的对象。但是,您需要 (dynamic_
-) 将其转换为正确的类型。如果您想避免这种情况,则需要使用固定 ID,例如MY_BUTTON_OFFSET + i
并将按钮指针自己存储在某处,然后使用 event.GetId() - MY_BUTTON_OFFSET
作为检索它们的索引。
P.S。与你的问题无关,但 wxEVT_COMMAND_BUTTON_CLICKED
又长又笨重,现在只是为了兼容性而存在,只需使用 wxEVT_BUTTON
即可。