2011-06-14 62 views
5

我对C++和wxWidgets很陌生。如何通过wxWidgets中的id获取小部件?

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

我的问题是如何通过它的ID来获得文本控制。我想在不同的范围内改变它的价值。 我是否需要保留一个指向每个可能改变其状态的小部件的指针,或者是否有一种方法从它的ID中获取指针?

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

+4

没有wx方便的机器,但'wxWindow :: FindWindow'&co应该做的伎俩。 – 2011-06-14 02:07:25

回答

8

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

1

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

我认为一个更清洁的解决方案是创建一个包含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在不同范围的文本控件。

相关问题