void MainWindow::deleteAllSlot()
{
int counter = ui->cityListWidget->count();
//qDebug() << "count is " <<counter;
#if 1
QListWidgetItem *item;
for(int index = 0;index <counter;index++)
{
item = ui->cityListWidget->takeItem(0);
delete item;
}
#endif
#if 0
QListWidgetItem *item = ui->cityListWidget->takeItem(0);
delete item;
item = ui->cityListWidget->takeItem(1);
delete item;
#endif
}
使用QListWidgetItem删除所有项。错误代码示例:
{
item = ui->cityListWidget->takeItem(index);
delete item;
}
看丁松林的视频看到这里,自己试了一下,qt中的QListWidget中的项是会自动向上补的,就是说如果我们删除了第零个(就是第一个嘛,下标是0么)项,那么qt会自动的将原先的第一个项,变为第零个项,所以说只要循环删除第零个项就能把所有的项都删除,如果是删除第index项,给大家举例说明一下啊。
以下是删除第index个项的效果图
图 1
图 2
大家可以把两张图片对比一下,删除一次之后还有一个项,说明在for循环中,程序只删除了两次,但是不是说for循环只运行了两次,真实情况是,当第一次for循环时,index=0,北京被删掉,当第二次for循环时,index=1,因为此时已经删除掉了一个项,上海变成了第零个项,杭州变成了第一个项,所以第二次for循环把杭州给删掉了,第三次for循环的时候,由于程序没有找到下标为2的项,所以就没有进行删除,大家自行理解一下。