如何从另一个 Qwidget 中删除小部件?

Posted

技术标签:

【中文标题】如何从另一个 Qwidget 中删除小部件?【英文标题】:How to remove widget from another Qwidget? 【发布时间】:2010-10-15 05:22:57 【问题描述】:

我创建了一个 QWidget(Parent)。在父小部件的内部,我创建了另一个 QWidget(Child)。在运行时我需要删除子小部件。该怎么做?

我没有使用任何布局。我直接放入 Parent Widget。

请帮我解决这个问题。

【问题讨论】:

我找到了答案:***.com/questions/3940409/… 【参考方案1】:

如果您使用例如添加小部件:

QWidget *w = new QWidget(parent);

...然后您可以使用以下命令将其删除:

delete w;

另一种方法是隐藏它:

w->hide();

【讨论】:

但我不知道子小部件的名称(在运行时我也在创建子小部件)。如何找到并删除它?, const QObjectList & children () const.这是一个 QObject 的方法。你可以用得到孩子。或者你可以简单地存储一个指向你的小部件的指针(你想删除哪个)【参考方案2】:

此答案适用于那些来自搜索引擎并希望得到标题中所述问题的答案的人。

如果您想从父级中删除子级而不删除或隐藏它(不会将其从父级中删除),请将子级的父级设置为 NULL

QWidget::setParent(NULL)

请注意,像这样显式地重新设置小部件的父级会带来一些影响(例如,可见性自动设置为隐藏)。请参阅QWidgetsdocumentation 了解更多信息。

【讨论】:

经过 2 个小时的 google-fu 我发现了这个 gem,它确实从布局中删除(但不删除)一个小部件。现在this->ui->myLayout->removeWidget(myWidget); 也已过时。感谢您让我继续我的 web-dev-escapist Qt-app。

以上是关于如何从另一个 Qwidget 中删除小部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 QWidget 中删除 QPalette

如何从 QStackedWidget 中删除所有小部件?

如何将小部件放入空的 QWidget 中? [关闭]

当小部件集更改时,调整 QWidget 的大小以仅保存当前小部件

QWidget如何在子小部件中接收keyPressEvent

如何从另一个小部件更改有状态小部件的变量?