Qt QListWidget的使用

最近的程序开发中,涉及到QListWidget的简单应用,其实QListView更为好用和具有灵活性,但是其基于MVC模型,在工程中没有这个经历学习它了,就先用QListWidget凑合了。

     我在工程中只用到了两个函数,一个是添加项,一个是删除项。

     我的程序应用场景是C/S架构中的客户端获取其他在线客户端Ip列表,我使用了:

   this->ui->otherlistWidget->addItem(static_cast<QString>(info.ip));
    很方便的插入一个Ip到列表。

我在工程中要经常对一直行数的某一项进行删除

  采取最简单的QListWidgetItem * QListWidget::takeItem(int row)

    QListWidgetItem *deletedItem=this->ui->otherlistWidget->takeItem(i);
    delete deletedItem;
需要注意的是,第二句的内存删除是一定要的,根据Qt文档,takeItem只是在视图(视觉)上实现了移除此项,但其实并没有释放内存。

当然,如果我们严格的按照QListWidgetItem->QListWidget来写的话,可以使用void QListWidget::removeItemWidget(QListWidgetItem * item),这个函数可以同时移除项和释放内存。
     2015/4/6 0:31补充:

在项目中需要根据项的名字将列表控件某一项删除,在不使用QListView的情况下的解决方法为:

QList<QListWidgetItem *> list=this->ui->peerlistWidget->findItems(name,Qt::MatchExactly);
     if(list.length()==0)
         return ;
     int row = this->ui->peerlistWidget->row(list[0]);
     QListWidgetItem  *item=this->ui->peerlistWidget->takeItem(row);
     delete item;
     item=NULL;



阅读更多
换一批

没有更多推荐了,返回首页