【问题标题】:wxNotebook - inner wxPanel - call method when page is changedwxNotebook - 内部 wxPanel - 页面改变时调用方法
【发布时间】:2020-12-20 18:34:04
【问题描述】:

我有wxNotebook 和几个wxNotebookPage。每个页面都有从wxPanel 继承的不同内容。更改活动页面时调用wxPanel 中的什么方法?如果我更改面板,我想更新面板内容。

我将类似的功能绑定到正在工作的调整大小事件。

void MyPanel::Init() {
     this->Bind(wxEVT_SIZE, &MyPanel::OnResize, this);
}

void MyPanel::OnResize(wxSizeEvent& ev){
    //do something to update panel
}

注意:这是 C++ 代码,但编程语言并不重要(可以是 Python)。我会更新解决方案,我只需要相同的逻辑或 wxWidget API 调用。

【问题讨论】:

    标签: wxwidgets wxnotebook


    【解决方案1】:

    当活动页面改变时,从 wxPanel 调用什么方法?

    面板上没有调用任何方法。而是将page changed event 发送到笔记本控件。您可以为此事件设置处理程序,类似于为上面面板上的大小事件设置处理程序的方式。通常这是在您的框架的构造函数中完成的,如下所示:

    MyFrame::MyFrame(...):wxFrame(...)
    {
    ...
        <notebookobject>->Bind(wxEVT_NOTEBOOK_PAGE_CHANGED, &MyFrame::OnPageChanged, this);
    ...
    }
    
    ...
    
    void MyFrame::OnPageChanged(wxBookCtrlEvent& event)
    {
        // do something in response to the page change here.
    }
    

    还有一个页面更改事件,在页面实际更改之前发送。页面更改事件有一个额外的功能,如果您想禁止页面被更改,您可以在页面更改处理程序中对事件对象调用 Veto()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多