使用wxwidgets编写一个界面,有两个按钮,两个文本框,点击按钮相应的文本框会显示那个按钮在点击,事件处理函数使用动态绑定。
#include <wx/wx.h>
class MyFrame : public wxFrame {
public:
MyFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(400, 300)) {
// 创建主面板
wxPanel* panel = new wxPanel(this, wxID_ANY);
// 创建按钮1
wxButton* button1 = new wxButton(panel, wxID_ANY, "Button 1", wxDefaultPosition, wxDefaultSize);
// 创建文本框1
textCtrl1 = new wxTextCtrl(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
// 创建按钮2
wxButton* button2 = new wxButton(panel, wxID_ANY, "Button 2", wxDefaultPosition, wxDefaultSize);
// 创建文本框2
textCtrl2 = new wxTextCtrl(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize);
// 创建垂直布局器
wxBoxSizer* vbox = new wxBoxSizer(wxVERTICAL);
vbox->Add(button1, 0, wxALL, 10);
vbox->Add(textCtrl1, 0, wxALL, 10);
vbox->Add(button2, 0, wxALL, 10);
vbox->Add(textCtrl2, 0, wxALL, 10);
panel->SetSizer(vbox);
// 绑定事件处理函数
button1->Bind(wxEVT_BUTTON, &MyFrame::OnButton1Click, this);
button2->Bind(wxEVT_BUTTON, &MyFrame::OnButton2Click, this);
}
// 按钮1的点击事件处理函数
void OnButton1Click(wxCommandEvent& event) {
textCtrl1->SetValue("Button 1 clicked");
}
// 按钮2的点击事件处理函数
void OnButton2Click(wxCommandEvent& event) {
textCtrl2->SetValue("Button 2 clicked");
}
private:
wxTextCtrl* textCtrl1;
wxTextCtrl* textCtrl2;
};
class MyApp : public wxApp {
public:
virtual bool OnInit() {
MyFrame* frame = new MyFrame("Button Click Demo");
frame->Show(true);
return true;
}
};
wxIMPLEMENT_APP(MyApp);
在上述代码中,我们创建了一个继承自wxFrame的MyFrame类,并在该类中添加了两个按钮和两个文本框。新增的事件处理函数 OnButton1Click
和 OnButton2Click
会根据按钮的点击事件分别更新对应的文本框。
在主函数中,我们创建了MyApp类,并通过调用 wxIMPLEMENT_APP
宏来启动应用程序,并展示MyFrame界面。
该示例演示了动态绑定按钮事件,并通过事件处理函数更新了相应的文本框