我对C ++和wxWidgets很陌生。
wxTextCtrl* text = new wxTextCtrl(panel, SOME_ID);
我的问题是如何通过其ID获取文本控件。我想在不同的范围内改变它的价值。 我是否需要保持指向每个可能更改其状态的窗口小部件的指针,或者是否有办法从其ID获取该指针?
这可能是一个简单的问题,但我想我找不到正确的搜索字词来找到答案。
答案 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。