wxwidgets: как получить доступ к элементам в новом кадре - PullRequest
0 голосов
/ 02 марта 2019

Я использую 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
}

Где ошибка?Спасибо!PS Я не могу представить свой вопрос.Поэтому мне нужно написать еще кое-что.Я не опытный программист C ++.С мой язык.А C ++ немного.Ответьте, пожалуйста.Оцените это.

PPS Я обнаружил ошибку.С этим кодом это работает:

guifrmMatrix * frm = новый guifrmMatrix (this);

...