是否可以枚举wxWidgets中的wxFrame子节点?

时间:2008-10-08 13:27:19

标签: c++ user-interface wxwidgets wxglade

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

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

有没有办法在生成的类之外获取某个小部件的指针 - 按名称,按类型,通过枚举子级或类似的东西?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

其实我自己找到了答案:

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

     // .. do something with current
}

答案 2 :(得分:-1)

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