Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt:在保留子窗口小部件的同时删除父窗口小部件?_Qt_Qwidget_Qobject - Fatal编程技术网

Qt:在保留子窗口小部件的同时删除父窗口小部件?

Qt:在保留子窗口小部件的同时删除父窗口小部件?,qt,qwidget,qobject,Qt,Qwidget,Qobject,我有一个显示子窗口小部件的Qt父窗口小部件 我需要删除父窗口小部件 稍后,我可能(或不可能)将子对象附加到另一个父对象,并将其显示在新容器中 删除第一个父级时,我没有访问第二个父级的权限 如何执行此操作?首先使用QWidget的hide()或setVisible(false)方法隐藏子小部件。然后使用setParent(nullptr)使子窗口小部件没有父窗口,这使它成为顶级窗口,这就是为什么需要先隐藏它 要在以后重新使用小部件,请将其添加到适当的新布局中,这也会将其设置为父级。您需要为它调用其

我有一个显示子窗口小部件的Qt父窗口小部件

我需要删除父窗口小部件

稍后,我可能(或不可能)将子对象附加到另一个父对象,并将其显示在新容器中

删除第一个父级时,我没有访问第二个父级的权限


如何执行此操作?

首先使用QWidget的
hide()
setVisible(false)
方法隐藏子小部件。然后使用
setParent(nullptr)
使子窗口小部件没有父窗口,这使它成为顶级窗口,这就是为什么需要先隐藏它


要在以后重新使用小部件,请将其添加到适当的新布局中,这也会将其设置为父级。您需要为它调用其
show()
setVisible(true)
方法,否则它将保持隐藏状态。

您是否尝试在子小部件上调用
QWidget::setParent(nullptr)
?您应该为这个小部件创建一个getter,或者将小部件本身传递给构造函数,这样您就已经拥有了对象范围之外的getter。