gpt4 book ai didi

c++ - 在Qt中从父节点中查找子节点

转载 作者:行者123 更新时间:2023-11-30 05:34:40 25 4
gpt4 key购买 nike

我有一个 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设置为标签栏的标签按钮,widget的所有权将由标签栏获得。因此,您的工具按钮将不再是 m_addNewTab 的任何子项。为了找到这些按钮,您必须搜索标签栏的子项:

    QList<QWidget*> widgetList = m_tabWidget->tabBar()->findChildren<QWidget*>();

为了使搜索更容易,请为您的工具按钮设置一些对象名称:

    QToolButton *tb = new QToolButton(widget);
tb->setObjectName("TB");
QToolButton *tb1 = new QToolButton(widget);
tb1->setObjectName("TB1");

关于c++ - 在Qt中从父节点中查找子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34132610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com