如何在wxWidgets中通过id获取小部件?

时间:2011-06-14 02:00:42

标签: c++ user-interface wxwidgets

我对C ++和wxWidgets很陌生。

wxTextCtrl* text = new wxTextCtrl(panel, SOME_ID);

我的问题是如何通过其ID获取文本控件。我想在不同的范围内改变它的价值。 我是否需要保持指向每个可能更改其状态的窗口小部件的指针,或者是否有办法从其ID获取该指针?

这可能是一个简单的问题,但我想我找不到正确的搜索字词来找到答案。

2 个答案:

答案 0 :(得分:7)

您可能需要静态函数wxWindow::FindWindowById。它返回一个普通的wxWindow指针,因此您必须将它转换为wxTextCtrl指针。

答案 1 :(得分:1)

您确定要从其他范围获取文本控件吗?

我认为更清晰的解决方案是创建一个包含wxTextCtrl的Window / Dialog类。然后这个新类应该有一个指向它包含的wxTextCtrl的指针。 然后将一个成员函数添加到Window / Dialog类以设置文本。类似的东西:

class MyWindow: public wxWindow
{
  public:
      void setTextCtrlText(const wxString &str) { m_textCtrl->ChangeValue(str); };
  private:
      wxTextCtrl *m_textCtrl;
};

这样您就不必按ID查找控件,也不必进行强制转换,也不必在其他范围内使用文本控件的ID。