当一个小部件被添加到QToolBox时,小部件的所有权是否会转移到QToolBox?换句话说:它会成为新的父级并在销毁时摧毁小部件吗?
答案 0 :(得分:4)
如果使用new QWidget(pointer_to_toolbox);
或类似的东西构建窗口小部件,工具箱将获取窗口小部件的所有权。
addItem()的文档并未说明所有权,因此我敢打赌,工具箱并未取得传递给addItem()
的任何小部件的所有权
答案 1 :(得分:3)
从我可以从qt源代码中收集的内容,工具箱不会获得该项目的所有权。以下是来自src / gui / qtoolbox.cpp的insertItem
函数片段:
int QToolBox::insertItem(int index, QWidget *widget, const QIcon &icon, const QString &text)
{
if (!widget)
return -1;
Q_D(QToolBox);
connect(widget, SIGNAL(destroyed(QObject*)), this,SLOT(_q_widgetDestroyed(QObject*)));
QToolBoxPrivate::Page c;
c.widget = widget;
...
}
从代码中可以看出,QToolBox
将指向widget
参数的指针分配给自己的私有变量。当小部件被销毁时,QToolBox
会被通知。
P.S。我从git检查了qt源代码。我无法在addItem
中找到qtoolbox.cpp
实施。有关于它的评论,但只有qtoolbox.h
中的声明。嗯...
答案 2 :(得分:0)
这实际上取决于代码的组织。您可以设计代码,使其能够重用与qtoolbox关联的对象,您必须更加具体。