2008-10-08 53 views
2

我正在使用wxGlade设计器为小应用程序生成GUI。 它生成一个类,它继承自主应用程序窗口wxFrame。 为了便于维护,我想避免在这个生成的类中编写额外的代码。是否有可能枚举wxWidgets中的wxFrame子项?

但是使用wxGlade创建的所有小部件实际上都是在自动生成的方法do_layout()中创建的,并且无法在生成的类中生成的方法范围之外访问它们。

有没有办法让某些小部件的指针在生成的类之外 - 按名称,按类型,枚举子项或类似的东西?

回答

3

所有继承自wxWindow的类(wxFrame就是其中之一)都有一个函数“GetChildren”,它返回一个子窗口列表,然后可以枚举它。如果您正在按名称查找特定字段,请使用“FindWindow”功能。

1

其实我发现自己的答案:

wxWindowList & children = myframe->GetChildren(); 
for (wxWindowList::Node *node = children.GetFirst(); node; node = node->GetNext()) 
{ 
    wxWindow *current = (wxWindow *)node->GetData(); 

    // .. do something with current 
} 
-1

我可以建议你尝试wxFormBuilder。我之前也使用过wxGlade,但它对使用方式的限制太多。例如,使用wxFormBuilder,您可以为表单上的每个控件选择“可见性”(public,protected,private)。它也可以为事件处理程序生成虚拟函数,所以您只需从wxFormBuilder生成的类中派生类并实现这些函数。

相关问题