我对C++和wxWidgets很陌生。
wxTextCtrl* text = new wxTextCtrl(panel, SOME_ID);
我的问题是如何通过ID获取文本控件。我想在不同的范围内更改它的值。我需要为每个可能更改状态的小部件保留一个指针吗?或者有没有办法从它的ID中获取指针?
这可能是一个简单的问题,但我想我找不到正确的搜索词来找到答案。
您可能想要静态函数wxWindow::FindWindowById。它返回一个普通的wxWindow指针,因此对于您的示例,您必须将它强制转换为wxTextCtrl指针。
您确定要从其他作用域通过文本控件的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用于不同作用域中的文本控件。