我对C++和wxWidgets很陌生。如何通过wxWidgets中的id获取小部件?
wxTextCtrl* text = new wxTextCtrl(panel, SOME_ID);
我的问题是如何通过它的ID来获得文本控制。我想在不同的范围内改变它的价值。 我是否需要保留一个指向每个可能改变其状态的小部件的指针,或者是否有一种方法从它的ID中获取指针?
这可能是一个简单的问题,但我想我找不到正确的搜索词来找到答案。
我对C++和wxWidgets很陌生。如何通过wxWidgets中的id获取小部件?
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在不同范围的文本控件。
没有wx方便的机器,但'wxWindow :: FindWindow'&co应该做的伎俩。 – 2011-06-14 02:07:25