使用QListWidgetItem删除所有项

本文通过错误代码示例介绍了QListWidget中删除所有项的常见误解。删除第index个项并不一定能清除全部内容,因为Qt会自动调整项的位置。正确的做法是循环删除第零个项,直到列表为空。作者通过对比删除过程中的状态帮助读者理解这一机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的项,所以就没有进行删除,大家自行理解一下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值