Qt中listwidget中刪除item的方法

2021-06-12 08:50:32 字數 1819 閱讀 3053

一、要想長按刪除qlistwidget的item,必須重寫滑鼠事件,所以需要繼承qlistwidget重寫自己的mylistwidget。分享一下我寫的類:

//.h檔案

#ifndef

cjwlistwidget_h#define

cjwlistwidget_h

#include
#include

#include

#include

#include

#include

#include

class

cjwlistwidget

:public

qlistwidget

;
#endif

//cjwlistwidget_h

//.cpp檔案
#include

"cjwlistwidget.h"

#include

cjwlistwidget::cjwlistwidget(

qwidget

*parent):

qlistwidget

(parent)

void

cjwlistwidget::mousepressevent(

qmouseevent

*event)

}
void

cjwlistwidget::mousereleaseevent(

qmouseevent

*e)

}
}
void

cjwlistwidget::deleteitemat()

}

需要注意的有三點:
1、刪除item需要使用函式takeitem而不是removeitemwidget。
2、要想刪除選中的項,由於qt4中取消了selecteditem()函式,所以需要使用

qlist

<

qlistwidgetitem

*>

list=

this

->selecteditems();

3、qlistwidget的item編號是從0開始的,即第一項的row是0。

二、刪除qlistwidget裡的某項內容時,先把其位置上的widget從qlistwidget拿掉(脫離關係),如果不再需要此widget的話,可刪除它

qlistwidgetitem *item = listwidgetmember->takeitem(listwidgetmember->currentrow());

delete item;

三、qlist < qlistwidgetitem * > list =listwidget1->finditems(pstr,qt::matchcasesensitive);

qlistwidgetitem* sel = list[0];

r = listwidget1->row(sel);

qlistwidgetitem *item = listwidget1->takeitem(r);

listwidget1->removeitemwidget(item);

delete item;

Qt 實現listWidget中項的檢索

寫了乙個槽函式,實現這樣的功能,如圖 上面是乙個 lineedit,下面是乙個listwidget。當我在lineedit輸入文字時,在listwidget中能根據輸入檢索到相關項,並顯示。剛開始的時候,我是這樣做的 這樣做的結果就是程式執行到 ui listwidget additem item ...

在ListWidget中新增自定義的Item

之前看過很多在listwidget中新增item的方法,但是大部分都沒能解決我的問題。昨天把這個問題解決了,想著把它記下來。留個紀念吧。先上乙個圖例。就像這一樣。這個是純 實現。以下是純 include dialog.h include ui dialog.h include include dia...

陣列中刪數1

input 多組測試,每組第一行輸入1個整數n n 20 然後是n個整數 第二行輸入1個整數m output 刪除在第一行的n個整數中第一次出現數字m並刪除,然後按照順序輸出剩下的數,上面是我自己寫的,想法是把要被刪去的數的後面所有位向前移一位 下面的思路是在輸出時直接跳過這個數不輸出 includ...