Qt的QListWidget清空内容出现段错误
1 问题描述
在使用Qt中的QListWidget控件的时候想要刷新其中的内容执行清空操作的时候出现 “段错误 (核心已转储)”。出现这个问题的具体原因看很多人分析是因为在执行清空前QListWidget控件已经connet到槽函数,所以在clear的时候就会出现段错误,具体的原因这里也不做太多分析。
2 解决方法
解决方法其实也很简单,这里参考了博客中评论区下La estonteco博主的回答成功解决了问题。
ui->listWidget->blockSignals(true);
ui->listWidget->clear();
ui->listWidget->blockSignals(false);
用La estonteco的话来说就是使用blockSignals方法暂时阻塞该对象的所有信号,清空完再启用。这样就可以避免重新绑定信号时可能出现的问题。