项目使用QListWidget 控制需要删除项当删除最后一个
代码如下 删除项
。
// 删除Item
QListWidgetItem* item = ui.listWnd->item(i);
ui.listWnd->removeItemWidget(item);
delete item;
遇到的问题当删除最后一项时 delete item
出现崩溃
解决需要在删除之前,把之前绑定QListWidget 的信号槽解除之后,在删除如下
//如果删除最后一个重新绑定信号槽,防止崩溃
if (ui.listWnd->count() == 1)
{
disconnect(ui.listWnd, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this, SLOT(on_currentItemChanged(QListWidgetItem *, QListWidgetItem *)));
}
ui.listWnd->removeItemWidget(item);
delete item;
if (ui.listWnd->count() == 0)
{
connect(ui.listWnd, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
this, SLOT(on_currentItemChanged(QListWidgetItem *, QListWidgetItem *)));
}
原因暂时,需要研究下QT 源码,有时间研究进行更新。