我正在使用wxFormBuilder创建GUI。所以我有我的应用程序:
HelloApp::HelloApp() {
}
HelloApp::~HelloApp() {
}
bool HelloApp::OnInit() {
guifrmMain* frame = new guifrmMain((wxWindow*)NULL);
frame->Show();
SetTopWindow(frame);
return true;
}
我有两个用于两个“框架”的类:
frmMain::frmMain(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style, const wxString& name) : wxFrame(parent, id, title, pos, size, style, name)
{
//skipped
m_Button->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(frmMain::onPressBTN), NULL, this);
}
frmMatrix::frmMatrix(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
{
m_bpButton28 = new wxBitmapButton(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW | 0);
m_text_tst = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
m_bpButton28->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(frmMatrix::onBtn1_click), NULL, this);
}
...
class guifrmMain : public frmMain
{
public:
/** Constructor */
guifrmMain( wxWindow* parent );
void onPressBTN(wxCommandEvent& event);
}
class guifrmMatrix : public frmMatrix
{
public:
/** Constructor */
guifrmMatrix(wxWindow* parent);
void onBtn1_click(wxCommandEvent& event);
};
guifrmMain::guifrmMain( wxWindow* parent )
:
frmMain( parent )
{
}
guifrmMatrix::guifrmMatrix(wxWindow* parent)
:
frmMatrix(parent)
{
m_parent = parent;
//this is not working:
m_text_tst->SetValue(_("test"));
}
当我按下按钮时,我开始一个新的框架:
void guifrmMain::onPressBTN(wxCommandEvent& event) {
frmMatrix* frm = new frmMatrix(this);
frm->Show(TRUE);
}
它已打开,但是事件在新框架中不起作用:
void guifrmMatrix::onBtn1_click(wxCommandEvent& event) {
m_text_tst->SetValue(_("onBtn1_click")); // this is not working
}
哪里有错误?谢谢! 附言我无法提交我的问题。所以我需要写更多的东西。我不是经验丰富的C ++程序员。 C是我的语言。 C ++有点。请回复。对此表示赞赏。
P.P.S。我发现错误。使用此代码,它可以工作:
guifrmMatrix * frm =新的guifrmMatrix(this);