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

sar*_*nan 5 qt

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

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

请帮我解决这个问题.

Ten*_*ken 7

此答案适用于那些从搜索引擎到达并想要标题中所述问题的答案的人。

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

QWidget::setParent(NULL)
Run Code Online (Sandbox Code Playgroud)

请注意,像这样显式重新设置窗口小部件的父级会带来多种影响(例如,可见性自动设置为隐藏)。请参阅QWidgets 文档以获取更多信息。

  • 经过 2 个小时的 google-fu 我发现了这个 gem,它确实从布局中删除(但不删除)一个小部件。现在 `this->ui->myLayout->removeWidget(myWidget);` 也已经过时了。感谢您让我继续我的网络开发逃避现实 Qt 应用程序。 (3认同)

sje*_*397 5

如果您添加小部件,例如:

QWidget *w = new QWidget(parent);
Run Code Online (Sandbox Code Playgroud)

...然后你可以删除它:

delete w;
Run Code Online (Sandbox Code Playgroud)

另一种方法是隐藏它:

w->hide();
Run Code Online (Sandbox Code Playgroud)