QT中如何清空QListWidget中的所以Item

鯎鯎 2011-05-13 10:56:48
我通过下面代码插入Item:

QStringList templist=temp.split("\n");

for(int i=0;i<count;i++)
{
QListWidgetItem *lst =new QListWidgetItem(templist.at(i), ui->listWidget);
ui->listWidget->insertItem(0,lst);
}


由于我的QListWidget每次使用时都得清空其中的数据,所以我在插入Item代码前加入删除函数,我试了好多次都没有办法正常删除所有数据,下面我是删除数据函数的代码:

int temnum= ui->listWidget->count();
ui->textEdit_2->append(QString("%1").arg(temnum));
for(int i=0 ; i < temnum; i++)
{
QListWidgetItem *item = ui->listWidget->takeItem(0);
delete item;
}

上面的代码在当下一次插入Item数据与删除Item数量相同时可以正常删除,如果下一次准备插入的Item数据只要不等于删除数据的数量,程序将自动跳出。由于我是在插入前调删除函数,如果我另外创建一个按钮会调用删除函数,删除及程序也能正常运行。我明明是先删除,怎么会跟后面准备插入的数据有关联呢?希望高手们帮忙!!
...全文
3145 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
鯎鯎 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangandi520 的回复:]

我这里先disconnect,SIGNAL(currentRowChanged(int))
然后就可以clear()了
具体原理不太知道
[/Quote]
我的数据是使用QProcess,是来自另一个程序的, 我试了好几次,个人认为可能跟QProcess有关,但没有考虑到disconnect的,我再试试
wangandi520 2011-05-14
  • 打赏
  • 举报
回复
我这里先disconnect,SIGNAL(currentRowChanged(int))
然后就可以clear()了
具体原理不太知道
鯎鯎 2011-05-14
  • 打赏
  • 举报
回复
我也试过用clear()函数,只要前后数据不同,程序还是会退出
鯎鯎 2011-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangandi520 的回复:]

我这里先disconnect,SIGNAL(currentRowChanged(int))
然后就可以clear()了
具体原理不太知道
[/Quote]
真的是这样!
我的情况是因为connect了listwidget的currentRowChanged,由于自己点了一下listwidget的滚动条(listwidget控件获得了焦点),再转到其他窗口,再回到程序窗口,使程序中的listwidget获得了焦点,触发了事件,使其不能全部删除。

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧