【发布时间】:2012-12-14 01:58:24
【问题描述】:
我正在尝试在 WXWidgets 中设置一个带有按钮网格的窗口。这些按钮中的每一个都将打开另一个窗口。现在我知道我可以通过根据按下的按钮在单独的函数中调用每个窗口来做到这一点。但这似乎有点低效。
我想要做的是让这些按钮中的每一个在单击时调用相同的函数,但传递一个 ID,该 ID 将用于确定打开哪个窗口。
我使用的基本代码如下(位被剥离,我有一个关闭应用程序的按钮,只是为了测试按钮)
Simple::Simple(const wxString& title, int x, int y)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(x,y))
{
wxPanel *testPanel = new wxPanel(this,wxID_ANY, wxDefaultPosition,wxSize(270, 150));
wxButton *testButton = new wxButton(testPanel, wxID_EXIT, wxT("Actors"), wxPoint(20,20));
Connect(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(Simple::eventWindowCall));
testButton->SetFocus();
Centre();
}
void Simple::eventWindowCall(wxCommandEvent & WXUNUSED(event))
{
Close(true); //just a line to make sure this function is being called
}
我已经尝试在使用连接时使用数字代替事件 ID,但如果我这样做,按钮的函数不会被调用。理想情况下,我可以只做类似 wxCommandEventHandler(Simple::eventWindowCall(26)) 的事情,并在 eventWindowCall 函数中放置一个 case 语句,该语句将根据传递的数字显示正确的窗口。但到目前为止,这种方法也没有效果。
您能提供的任何建议都会很棒。感谢您阅读本文。我已经研究了好几个小时。
【问题讨论】: