Qt之QAbstractItemView右鍵選單

2021-09-07 07:26:48 字數 2953 閱讀 8767

說起右鍵選單,之前qt之自定義qlineedit右鍵選單

這篇文章中我已經講述過3種右鍵選單的實現方式,今兒也是在囉嗦一下,針對qlistwidget類在定製一下右鍵選單,我使用的具體方式呢,是直接重寫了contextmenuevent方法,在這個方法中彈出右鍵選單。

如圖1是針對qlistwidget定製的右鍵選單,美觀程度一般,但是功能基本實現

圖1 qlistwidget右鍵選單

listitem是定製的item項,使用setitemwidget介面設定為qstandardlistwidgetitem項的視窗

1、刪除,首先獲取當前項,然後獲取獲取當前項上的視窗,並把其析構

1

void

draglist::deletesotck()28

9if (listitem * itemwidget =itemwidget(item))

1014

15delete

item;

16 item =nullptr;

17 }

2、置頂,這個操作需要注意,如果當前項已經是第乙個,那麼不需要做任何處理

1

void

draglist::topsotck()28

9if (row(item) == 0)10

1314 listitem * itemwidget =itemwidget(item);

15 qlistwidgetitem * newitem =takeitem(row(item));

16 insertitem(0

, newitem);

17 listitem * topwidget = new

listitem;

18 topwidget->setdata(itemwidget->getdata());

19setitemwidget(newitem, topwidget);

2021

if(itemwidget)

2226

setcurrentitem(newitem);

27 }

3、置低,同樣的道理,如果當前項是最後乙個,那麼也不需要做處理

1

void

draglist::bottomsotck()28

9if (row(item) == count() - 1)10

1314 listitem * itemwidget =itemwidget(item);

15 qlistwidgetitem * newitem =takeitem(row(item));

16additem(newitem);

17 listitem * bottomwidget = new

listitem;

18 bottomwidget->setdata(itemwidget->getdata());

19setitemwidget(newitem, bottomwidget);

2021

if(itemwidget)

2226

setcurrentitem(newitem);

27 }

4、上移一位

1

void

draglist::upsotck()28

9int itemrow =row(item);

10if (itemrow == 0)11

1415 listitem * itemwidget =itemwidget(item);

16 qlistwidgetitem * newitem =takeitem(row(item));

17 insertitem(itemrow - 1

, newitem);

18 listitem * upwidget = new

listitem;

19 upwidget->setdata(itemwidget->getdata());

20setitemwidget(newitem, upwidget);

2122

if(itemwidget)

2327

28setcurrentitem(newitem);

29 }

5、下移一位

1

void

draglist::downsotck()28

9int itemrow =row(item);

10if (itemrow == count() - 1)11

1415 listitem * itemwidget =itemwidget(item);

16 qlistwidgetitem * newitem =takeitem(row(item));

17 insertitem(itemrow + 1

, newitem);

18 listitem * downwidget = new

listitem;

19 downwidget->setdata(itemwidget->getdata());

20setitemwidget(newitem, downwidget);

2122

if(itemwidget)

2327

setcurrentitem(newitem);

28 }

qt之qabstractitemview檢視右鍵選單

qt之自定義qlineedit右鍵選單

qt之選單項定製

qt 彈出式選單陰影

qt之預設選單語言設定

QT之Qt之Q PROPERTY巨集理解

qt中的q property巨集在qt中是很常用的,那麼它有什麼作用呢?qt提供了乙個絕妙的屬性系統,q property 是乙個巨集,用來在乙個類中宣告乙個屬性property,由於該巨集是qt特有的,需要用moc進行編譯,故必須繼承於qobject類。q property type name r...

Qt系列 之Qt之打包發布

date 2019 1 31 發布方式 qt發布的時候,通常使用兩種方式 1 靜態編譯 2 動態編譯 靜態編譯 把相關聯的庫一併引入可執行程式,雖然發布簡單,但可執行程式較大。動態編譯 相關聯的庫,以dll的形式引用,不被包含進可執行程式,發布不方便,但可執行程式較小。靜態發布雖然不需要較多的dll...

QT庫學習之安裝QT庫

qt是什麼,qt是乙個1991年由奇趣科技開發的跨平台 c 圖形使用者介面 應用程式 開發框架。它既可以開發 gui程式,也可用於開發非gui程式,比如控制台工具和伺服器。qt是 物件導向 的框架,使用特殊的 生成擴充套件 稱為元物件編譯器 meta object compiler,moc 以及一些...