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

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

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

请帮我解决这个问题。

【问题讨论】:

标签: qt


【解决方案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。
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 2016-12-12
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-07-09
  • 2013-02-14
  • 1970-01-01
相关资源
最近更新 更多