gpt4 book ai didi

c++ - 在 Qt 中获取父布局

转载 作者:可可西里 更新时间:2023-11-01 18:38:10 25 4
gpt4 key购买 nike

快速提问。有什么方法可以(轻松地)在 Qt 中检索小部件的父布局?

PS:出于逻辑原因,QObject::parent() 将不起作用。

编辑:我肯定小部件有父布局,因为我在代码的前面将它添加到布局中。现在,我在窗口中有许多其他布局,虽然我可以跟踪它们,但我只想知道是否有一种简单干净的方法来获取父布局。

编辑2:抱歉,“easy and clean”可能不是最好的推杆方式。我的意思是使用 Qt API。

编辑3:我正在像这样将小部件添加到布局中:

QHBoxLayout* layout = new QHBoxLayout;

layout->addWidget(button);

最佳答案

解决了!用法:QLayout* parentLayout = findParentLayout(addedWidget)

QLayout* findParentLayout(QWidget* w, QLayout* topLevelLayout)
{
for (QObject* qo: topLevelLayout->children())
{
QLayout* layout = qobject_cast<QLayout*>(qo);
if (layout != nullptr)
{
if (layout->indexOf(w) > -1)
return layout;
else if (!layout->children().isEmpty())
{
layout = findParentLayout(w, layout);
if (layout != nullptr)
return layout;
}
}
}
return nullptr;
}

QLayout* findParentLayout(QWidget* w)
{
if (w->parentWidget() != nullptr)
if (w->parentWidget()->layout() != nullptr)
return findParentLayout(w, w->parentWidget()->layout());
return nullptr;
}

关于c++ - 在 Qt 中获取父布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409539/

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