【问题标题】:wxWidgets: How to refer to child components?wxWidgets:如何引用子组件?
【发布时间】:2013-08-21 06:14:24
【问题描述】:

我有一个名为 p 的 wxPanel。

我有 5 个文本框。

如何为面板中的每个文本框分配一段静态文本而不一一进行?我可以像引用数组元素一样引用它们吗?

谢谢!

【问题讨论】:

标签: c++ wxwidgets


【解决方案1】:

示例可能如下所示:

for( wxWindowList::iterator it = yourWindow->GetChildren().begin();
     it != yourWindow->GetChildren().end(); it++){

     wxStaticText* aStaticText = dynamic_cast<wxStaticText *>( *it );

    if( aStaticText ){
     aStaticText->SetLabel( wxT("FooBar") );
    }

}

我没有测试/编译它,所以请原谅任何错别字

【讨论】:

  • 这是一个非常聪明的技术...您能解释一下wxStaticText* aStaticText = dynamic_cast&lt;wxStaticText *&gt;( *it ); 行的作用吗?谢谢!也许有些 cmets 会这样做。
  • 好的,我会尝试分解它,一步一步地it 是包含wxWindow * 指针的列表的迭代器,所以*it 会给你一个'wxWindow *' 指针。由于您想访问特定 wxWindow 子类的功能,在您的情况下为 wxStaticText(?),您需要一个演员表。我放在那里的动态比static_cast 或类似 c 的演员更方便,因为当您的窗口/面板包含不同类型的元素时它也可以工作
【解决方案2】:

因为wxPanelwxWindow 的子类,你可以使用wxWindow::GetChildren

这将为您提供所有孩子的类似 stl 的列表

【讨论】:

  • 是的,我注意到了这种方法。但是,我不太确定如何使用它。您能否向我展示如何设置面板中第二个文本框的值的示例?谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 2021-07-30
  • 2019-07-17
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
相关资源
最近更新 更多