Qt从布局中获取孩子

新手上路,请多包涵

我尝试隐藏布局中的所有小部件。但看起来 findChildren 不适用于布局。

这是我的示例代码:

 QLayout * layout = widget -> findChild<QLayout *> (layoutName);
QList<QWidget *> list = layout -> findChildren<QWidget *> ();

cout << list.size() << endl;

size 是 0,但在这个布局中我有一些小部件。但是,如果我尝试从父小部件获取小部件,相同的代码可以正常工作。

如何从适当的布局中获取它们?

原文由 Alex Ivasyuv 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 807
2 个回答

布局不会在父子树中“注入”自身,因此小部件保持(直接)其父小部件的子级。

您可以使用 QLayout::count()QLayout::itemAt() 代替。

原文由 Frank Osterfeld 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为创建一个 QWidget 作为容器并将您的小部件放在该“容器小部件”中更容易,这样您可以通过在“容器小部件”上调用 findChildren 来访问您的小部件:

 auto children = ui->containerWidget->findChildren<QWidget *>();
for (auto child : children) {
    child->setVisible(false);
}

原文由 Hani Shams 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题