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;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章