QT清除窗口小部件内容

4
我有一个QWidget重命名为renameWidget,被引用为ui->renameWidget。在其中,我有一个QVBoxLayout * renamebox,其中包含多个标签和文本编辑器。
我需要发生的是,当我按下提交这些文本编辑器的按钮时,我需要删除QWidget中的所有内容。这将使该框被清空或清除的效果。
我尝试过仅删除vboxlayout,也尝试了以下方法:
qDeleteAll(ui->renameWidget->findChildren<QVBoxLayout *>());

一切都没有起作用,有什么想法吗?

2个回答

4

尝试

 qDeleteAll(ui->renamebox->findChildren<QLabel *>());
 qDeleteAll(ui->renamebox->findChildren<QTextEdit *>());

虽然通常最好在大多数基于QObject的类上调用deleteLater,因为它允许对象在下一个事件循环中清理,而不是在处理事件时中途清理。


你真的应该用循环替换qDeleteAll,循环中调用deleteLater来删除所有找到的子项。 - cppguy

1

qDeleteAll(ui->renamebox->children());会删除所有子项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接