问题描述
Qt5 在使用listWidget时,使用clear命令报错。
0x550525DC (Qt5Widgetsd.dll)处(位于 pokemon_PBS_edit.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
而且当你点击,或者选中了listWidget的item之后,再调用clear会有这个现象。
原因分析:
最后我发现当链接了currentItemChanged的信号和槽函数后,clear就会报错,原因很简单,item清空也是change的一种情况。然而由于没有item所以传入的是空指针,再操作就会报错。
tips:虽然很简单,但是确实很容易忽略。
解决方案:
在currentItemChanged的槽函数中添加空指针判断
if (current == nullptr)
return;