c++ - Qt - 从 QWidget 的布局中清除所有小部件

标签 c++ qt qwidget

我在对话框中有一个QWidget。在程序运行的过程中,几个 QCheckBox * 对象被添加到布局中,如下所示:

QCheckBox *c = new QCheckBox("Checkbox text");
ui->myWidget->layout()->addWidget(c);

这适用于所有复选框。但是,我的对话框中还有一个名为“clear”的 QPushButton,当它被按下时应该清空 myWidget 中的所有内容,使其保持空白,就像在任何 QCheckboxes 已添加。我一直在网上和文档中四处寻找,但我无法找到执行此操作的方法。我找到了 this我认为与我的问题相似的问题,并尝试了这样的解决方案:

void myClass::on_clear_clicked()
{
  while(ui->myWidget->layout()->count() > 0)
  {
    QLayoutItem *item = ui->myWidget->layout()->takeAt(0);
    delete item;
  }
}

然而,这似乎没有做任何事情。值得注意的是,我不确定这是否是从他的回答中正确翻译出来的;有点不清楚应该如何实现给定的功能,所以我做了我最好的有根据的猜测。如果有人知道我可以在上面进行哪些更改以使其工作(或者只是一种不同的工作方式),将不胜感激。

最佳答案

你可以试试这个:

    while ( QLayoutItem* item = ui->myWidget->layout()->takeAt( 0 ) )
    {
        Q_ASSERT( ! item->layout() ); // otherwise the layout will leak
        delete item->widget();
        delete item;
    }

关于c++ - Qt - 从 QWidget 的布局中清除所有小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643853/

相关文章:

c++ - Qt读写二进制文件

c++ - QChart 日志轴数据未显示

c++ - Qtableview搜索栏

python - 使用 libclang 查找匿名枚举

c++ - 使用 std::chrono::from_stream() 解析时间格式 "DD/MM/YYYY at hh:mm:ss"和其他格式

python - QWebView 不加载外部 CSS

css - 如何按类选择QWidget

qt - QFormLayout中自定义QWidget,垂直对齐问题

c++ - 如何不断从 vector 中删除奇数位置的值,直到只剩下一个?

带有 unique_ptr 的 C++ 嵌套映射