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数据只要不等于删除数据的数量,程序将自动跳出。由于我是在插入前调删除函数,如果我另外创建一个按钮会调用删除函数,删除及程序也能正常运行。我明明是先删除,怎么会跟后面准备插入的数据有关联呢?希望高手们帮忙!!
4 个解决方案
#1
我也试过用clear()函数,只要前后数据不同,程序还是会退出
#2
我这里先disconnect,SIGNAL(currentRowChanged(int))
然后就可以clear()了
具体原理不太知道
然后就可以clear()了
具体原理不太知道
#3
我的数据是使用QProcess,是来自另一个程序的, 我试了好几次,个人认为可能跟QProcess有关,但没有考虑到disconnect的,我再试试
#4
真的是这样!
我的情况是因为connect了listwidget的currentRowChanged,由于自己点了一下listwidget的滚动条(listwidget控件获得了焦点),再转到其他窗口,再回到程序窗口,使程序中的listwidget获得了焦点,触发了事件,使其不能全部删除。
#1
我也试过用clear()函数,只要前后数据不同,程序还是会退出
#2
我这里先disconnect,SIGNAL(currentRowChanged(int))
然后就可以clear()了
具体原理不太知道
然后就可以clear()了
具体原理不太知道
#3
我的数据是使用QProcess,是来自另一个程序的, 我试了好几次,个人认为可能跟QProcess有关,但没有考虑到disconnect的,我再试试
#4
真的是这样!
我的情况是因为connect了listwidget的currentRowChanged,由于自己点了一下listwidget的滚动条(listwidget控件获得了焦点),再转到其他窗口,再回到程序窗口,使程序中的listwidget获得了焦点,触发了事件,使其不能全部删除。