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;



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