【问题标题】:How to delete objects inside Widget in Qt如何在 Qt 中删除 Widget 内的对象
【发布时间】:2015-09-02 17:06:53
【问题描述】:

我有MainWindow 表格,里面有Widget。我还有另一个Widget 类(promoted to MainWindow),其中只有 DockWidget。在MainWindow 中,我正在打开新的并放入Widget。但是当我从close(cross"X") 按钮关闭DockWidget 时。在我的@ 987654332@它不清洁..

对不起,我的英语不好最好在这里粘贴我的代码:

    qDebug() << ui->widget->layout()->count();

    QueryWidget *lQueryWidget = new QueryWidget(this);

    ui->widget->layout()->addWidget(lQueryWidget);

所以每次虽然我关闭DockWindow(lQueryWidget)layout()-&gt;count() 永远不会减少。我试图删除布局内的所有内容,例如;

QList<QObject*> child = ui->widget->layout()->children();

foreach (QObject *var, child)
{
    delete var;
}

但它永远不会进入 foreach 循环。如果您检查下面的图片,您会看到 DockWidget 上方有一些东西,但它不可见..您能帮我解决这个问题吗?

【问题讨论】:

  • 您应该考虑使用QLayout 方法,而不是删除QObject::children(),例如count()itemAt()removeItem()。另外,我无法理解的一件事-您是否将MainWindow 放在MainWindow 内?
  • @Amartel QueryWidget 在 MainWindow Widget 对象中提升
  • 为什么有两个QMainwindow?为什么要将那个小部件提升为 QMainwindow?你想做什么?
  • @UmNyobe 我有 1 个 QMainWindow 和 2 个 QWidget 类。我在 QMainWindow 中创建了 2 个小部件并将 QWidgets 提升为 QMainWindow ...我正在尝试将 MainWindow 与小部件(具有 DockWidgets)分开

标签: qt user-interface widget


【解决方案1】:

要制作可停靠的小部件,您应该使用

QDockWidget::setWidget(QWidget * widget)

当停靠小部件被删除时,小部件将被删除。
您不应该操纵停靠小部件布局。

【讨论】:

  • 听起来不错,我应该写在 QueryWidget 类还是 MainWindow 中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多