• 7920阅读
  • 9回复

[提问]怎么删除tablewidget为空的行 [复制链接]

上一主题 下一主题
离线wangyan23888
 

只看楼主 倒序阅读 楼主  发表于: 2013-02-05
各位大侠,我按以下的代码想删除tablewidget中为空的某一行,结果不行,不知为什么?
for(int k = 0 ; k < hangshu ; k++)
{
      if(ui->tableWidget_6->item(k,0) == NULL || ui->tableWidget_6->item(k,0) && ui->tableWidget_6->item(k,0)->text()==tr(""))
      {
           ui->tableWidget_6->removeRow(k);
      }
}
这样的话还是会有空行出现的,判断条件按下面的也是不行的
if(ui->tableWidget_6->item(0,0)==0)
在线uidab

只看该作者 1楼 发表于: 2013-02-05
回 楼主(wangyan23888) 的帖子
感觉item不会为空或NULL的,你判断text为空就好了。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线realfan

只看该作者 2楼 发表于: 2013-02-05
当ui->tableWidget_6->removeRow(k);后,进入下一次循环,k值增加一,但因为刚刚移除一行,所以,item(k, 0)取的是删除行后面第2行,相当于跳了一行

试试
for (int k = hangshu -1; k >= 0; --k)
{
......
}
离线wangyan23888

只看该作者 3楼 发表于: 2013-02-05
回 1楼(uidab) 的帖子
这样子吗?
if(ui->tableWidget_6->item(i,0)->text().isEmpty())

编译时通过了,运行直接出错的了
在线uidab

只看该作者 4楼 发表于: 2013-02-05
回 3楼(wangyan23888) 的帖子
这种情况最好debug设置断点,然后自己想一下应该是什么条件。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线wangyan23888

只看该作者 5楼 发表于: 2013-02-05
回 2楼(realfan) 的帖子
非常感谢,是你说的这样子的。
在线uidab

只看该作者 6楼 发表于: 2013-02-05
回 2楼(realfan) 的帖子
刚才光看if了,这个for循环的问题以前讨论过,必须不能从0开始。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线wangyan23888

只看该作者 7楼 发表于: 2013-02-05
回 6楼(uidab) 的帖子
呵呵,没事的。
离线unizii

只看该作者 8楼 发表于: 2013-02-05
不应该是null吧
离线realfan

只看该作者 9楼 发表于: 2013-02-05
回 8楼(unizii) 的帖子
null也可以。没set过,item就返回0
快速回复
限100 字节
 
上一个 下一个