QTableWidget删除行出错

在调用removeRow删除QTableWidget的行时总会遇到一个问题,说tableWidget已经是isEmpty(),不能再删除了,但其实还有一行没删除,可是只要删除那最后的一行就出错.代码大致是这个样子的

 1.这里是删除的代码,感觉应该没有问题的

for (int i = tableRowCount; i >= 0; --i)
{
ui.classfication_table->removeRow(i);
}

2. 前面给table建立了一个信号槽链接

connect(ui.classfication_table, SIGNAL(itemSelectionChanged()), this, SLOT(OnSelectTableRowChanged()));

每次改变所选中的item,都会触发这个槽函数

3. 槽函数

void MakeTemplate::OnSelectTableRowChanged()
{
QList<QTableWidgetItem*> items = ui.classfication_table->selectedItems();
QTableWidgetItem *item = items.first();
item.......
}

后来我发现,每次我在执行removeRow()进行删除后,如果删除的中的item在删除前是选中状态,当删除这一行后,会执行OnSelectTableRowChanged这个槽函数.并且将这个item上一行的item重新作为选中状态.当我执行完remove最后一行后,此时table已经没有item了,也没有行,但是仍然执行这个函数,但是items已经是空的了,所以在向下执行的时候会出错

解决方法就是在进入这个函数的时候添加一个判断,看table是否为空,或items是否为空.

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值