gpt4 book ai didi

c++ - wxWidget 按下了哪个按钮(wxButton)?

转载 作者:行者123 更新时间:2023-11-28 04:05:55 27 4
gpt4 key购买 nike

我正在尝试使用这段代码创建一个按钮数组

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 作为检索它们的索引。

附言与您的问题无关,但是 wxEVT_COMMAND_BUTTON_CLICKED 又长又笨重,现在只是为了兼容性而存在,只需使用 wxEVT_BUTTON 即可。

关于c++ - wxWidget 按下了哪个按钮(wxButton)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58709118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com