如何从QSplitter中删除QWidgets
我喜欢Tuminoid的答案。但是,如果您绝对需要删除它,请尝试获取要删除的小部件,然后在该小部件上调用setParent(NULL)
。这是我最好的猜测。
,如果你想保留的小部件,并把它在其他地方目前还不清楚我的,或者如果你想摧毁该Widget。
销毁小部件:如果你能 获得一个指向小部件,你可以简单地 删除它。拆分器将 安全地通知其子 被删除,并将从其自身删除 。
保留部件:如果你抢 指针到小部件,您可以 简单地设置其母公司其他一些 部件并将其添加到另一个 小部件的布局,它会显示 那里。这是安全的,因为QSplitter将被通知一个 其子女正在重新设置。
如果要设置父为NULL(cjhuitt的答案),要知道,你现在负责清理内存,因为小部件不再有父。
如果你持有一个指针部件,那么就删除它,或者使用deleteLater()如果你想成为安全起见。
如果你没有小部件指针,使用了QSplitter ::小部件(INT指数)的功能。然后,您可以使用它的deleteLater()插槽。
如果你没有小部件指数,但你还是知道小部件的objectName(),然后的QObject :: findChild()是让小部件指针的唯一途径。
另一种简单的方法来防止孩子从窗口小部件入门删除是使用QSplitter.takeWidget(孩子)。这也是从拆分器中删除小部件的推荐方式。 (Qt Documentation)
提供一个文档链接takeWidget。 – W55tKQbuRu28Q4xv 2010-11-02 06:48:17
我遇到了同样的问题。在Qt 4.8中暂时隐藏QSplitter的一个小部件,我只是隐藏它。然而这还不够,因为分离手柄仍然可以移动。但是手柄可以访问和隐藏,以及:
frameA->setVisible(conditionA);
frameB->setVisible(conditionB);
if (!(conditionA && conditionB)) // if only 1 frame is visible
{
splitter->handle(0)->setVisible(false);
}
注意,当你设置父为NULL窗口小部件成为主窗口...(除非你先隐藏起来。) – 2012-01-22 08:27:57