【发布时间】:2016-03-11 23:58:39
【问题描述】:
我有一个 QTabWidget,我正在借助以下代码动态添加选项卡和工具按钮。
QTabWidget *m_tabWidget = new QTabWidget(this);
m_addNewTab = new QWidget(m_tabWidget);
m_addNewGridLayout = new QGridLayout(m_addNewTab);
m_addNewWebView = new QWebView(m_addNewTab);
widget = new QWidget(m_addNewTab);
tb = new QToolButton(widget);
tb1 = new QToolButton(widget);
m_horizontalLayout = new QHBoxLayout(widget);
m_horizontalLayout->addWidget(tb);
m_horizontalLayout->addWidget(tb1);
m_addNewGridLayout->addWidget(m_addNewWebView, 0, 0, 1, 1);
m_tabWidget->addTab(m_addNewTab, QString());
动态添加 3-4 个选项卡后,我只想获取 QToolButton 对象。 我使用下面的代码来查找父窗口小部件的子窗口。
for (tabCount = 0;tabCount < m_tabWidget->count();tabCount++)
{
QWidget *tab = m_tabWidget->widget(tabCount);
QList<QWidget*> widgetList = tab->findChildren<QWidget*>();
foreach( QWidget* widgetPtr, widgetList )
{
qDebug() << "Child Widget" << widgetPtr;
}
}
以上代码仅打印“QWebView”指针。为什么不是 QToolButton 对象?正如我们在 QToolButton 中给出的父级。
有人可以帮忙吗?
提前致谢
【问题讨论】:
-
您可能需要将
widget添加到标签的m_addNewGridLayout布局中。 -
我已尝试将 m_horizontalLayout 添加到 m_addNewGridLayout。添加以下语句后,它不起作用。 m_addNewGridLayout->addLayout(m_horizontalLayout, 0, 0, 1, 1);
-
不工作?错误是什么?您需要将布局添加到不同的行/列。请改用
m_addNewGridLayout->addLayout(m_horizontalLayout, 1, 0, 1, 1);。 -
在 qDebug 的意义上不起作用,只打印“QWebView”对象。
-
根据您的建议,我尝试添加 m_addNewGridLayout->addLayout(m_horizontalLayout, 1, 0, 1, 1);但它会打印不同选项卡中可用的所有“QWebView”对象。它也没有打印所需的 QToolButton 对象。