2个面板之间的通信

Communicating between 2 panels

本文关键字:通信 之间 2个      更新时间:2023-10-16

在阅读wxWiidgets教程时,我看到了这个教程,作者创建了两个子类wxPanelLeftPanelRightPanel

左边有2个按钮,点击它右边的文本更新。现在有另一个类 communication ,它有一个成员wxPanel,其中左面板和右面板是子面板。

Left Panel有一个方法->

void LeftPanel::OnPlus(wxCommandEvent & WXUNUSED(event))
{
  count++;
  Communicate *comm = (Communicate *) m_parent->GetParent();
  comm->m_rp->m_text->SetLabel(wxString::Format(wxT("%d"), count));
}

其中m_text是右面板的public成员。

我怀疑这是否是一种好的沟通方式。我的问题-这是正确的沟通方式吗?什么是更好的方法?

我也看了你说的教程。我认为这是一种很好的通信方式,因为它使用了wxwidgets的connect事件方法(请阅读事件以了解更多细节)。我不是wxwidgets的专家,但我总是使用这种方式来编写我的应用程序,将类widgets的事件关联到类的函数,然后该函数定位它必须更改属性的对象。

无论如何,如果你认为这个事件(按加号按钮)会经常发生,特别是,如果你有太多的函数/按钮,比如教程中的加号和减号,你可以在构造函数中定义m_text:

在标题

:

wxStaticText *m_textlp;
在construtor:

m_textlp = ( (Communicate *) m_parent->GetParent() )->m_rp->m_text;

使得函数只有:

void LeftPanel::OnPlus(wxCommandEvent & WXUNUSED(event))
{
  count++;
  m_textlp->SetLabel(wxString::Format(wxT("%d"), count));
}