Qt Designer 停靠小部件儿童访问

Posted

技术标签:

【中文标题】Qt Designer 停靠小部件儿童访问【英文标题】:Qt Designer dock widgets children acess 【发布时间】:2012-02-08 18:58:11 【问题描述】:

我使用 Qt Designer 制作了一个表单,它有一些停靠小部件,这些停靠小部件有一些子小部件。如何访问我的 mainwindow.cpp 中的 dockwidget 和这些子小部件?

【问题讨论】:

【参考方案1】:

我强烈建议您阅读有关此类内容的文档,但为了让您有个先机,QDockWidget 继承自 QWidget,而 QWidget 继承自 QObject:

https://doc.qt.io/qt-4.8/qobject.html#children

widget->children() 只会告诉你这个小部件的孩子。如果您还不知道要直接访问的对象的名称,或者没有对它们的引用,则需要这样做。

更新

当您在 Qt 设计器中创建对象并在 MainWindow 中运行为您生成的 setupUi(this) 时,您将可以访问您设置为成员的所有小部件。您可以直接访问它们,因为它们在 Qt Designer 中被命名。请查看有关 Qt 入门的众多教程之一。这是一个向您展示如何使用您的 ui 文件并从中访问成员的方法:http://sector.ynet.sk/qt4-tutorial/my-first-qt-gui-application.html

【讨论】:

我在问如何访问 docwidget 本身,然后访问它的孩子。 @Menopia - 我认为你投票给我是不公平的,因为你没有阅读文档,甚至没有任何关于 qt 的入门级信息。 真的。他没有像人们通常那样给你任何废话。他给了你一个简短的回答和很多写得很好的文档。 @xdsy - 没有问题。如果您认为它有帮助,您也可以接受答案【参考方案2】:

您还可以从主窗口获取所有dockWidgets的列表

QList<QDockWidget *> dockWidgets = findChildren<QDockWidget *>();

类似的技术适用于获取工具栏等,因此您不必在创建列表时手动存储列表

【讨论】:

以上是关于Qt Designer 停靠小部件儿童访问的主要内容,如果未能解决你的问题,请参考以下文章

Qt 设计器和 Dock 小部件

如何允许浮动 Qt5 停靠小部件的交互式调整大小

Qt Designer 使小部件在布局中与另一个小部件重叠

使用 Python 为 Qt Designer 自定义 Qt 小部件

从 Qt Designer 调用一个小部件

如何在 Qt-Designer 中使用自定义小部件