Qt 刪除QGraphicsScene中的Item

2021-10-02 19:47:58 字數 2083 閱讀 8564

原文:

管理qgraphicsscene中的items其實不是很方便,本文操作的是刪除qgraphicsscene中的item

要執行此操作首先需要在新增item的時候設定item為可被選中

中是獲取選中的item列表

迴圈刪除item列表中的items

// 新增item

qreal x =

20404614

; qreal y =

3918540

; qgraphicsellipseitem* ellipse =

new qgraphicsellipseitem;

ellipse-

>

setrect

(x - xoffset, y - yoffset,30,

30); ellipse-

>

setpen

(qcolor

(qt::white));

ellipse-

>

setbrush

(qbrush

(qcolor

(qt::red)))

;// 設定可被選中

ellipse-

>

setflags

(qgraphicsitem::itemisselectable)

; scene-

>

additem

(ellipse)

; view-

>

centeron

(x - xoffset, y - yoffset)

;

刪除item

qlist> itemlist = scene-

>

selecteditems()

;for

(auto i =

0; i < itemlist.

size()

; i++

)

刪除qgraphicsscene中的item即需要知道item的座標

然後刪除這個區域內的item即可

// 新增item

qreal x =

20404614

; qreal y =

3918540

; qgraphicsellipseitem* ellipse =

new qgraphicsellipseitem;

ellipse-

>

setrect

(x - xoffset, y - yoffset,30,

30); ellipse-

>

setpen

(qcolor

(qt::white));

ellipse-

>

setbrush

(qbrush

(qcolor

(qt::red)))

; ellipse-

>

setflags

(qgraphicsitem::itemisselectable)

; scene-

>

additem

(ellipse)

; view-

>

centeron

(x - xoffset, y - yoffset)

;

刪除item

qreal x =

20404614

; qreal y =

3918540

; qrectf rect

(x - xoffset, y - yoffset,5,

5); qlist> itemlist = scene-

>

items

(rect)

;for

(auto i =

0; i < itemlist.

size()

; i++

)

Qt動態刪除

m glayout removewidget widget delete widget ui widget children i int num ui m glayout count 獲取gridlayout中item的數目 num return for int i im glayout itema...

Qt刪除資料夾

寫的軟體需要進行資料夾的複製,開始不怎麼懂就找了個拷貝資料夾的 測試了一下,執行程式選擇了源目錄和目標目錄相同進行拷貝,結果悲劇了。因為是遞迴拷貝,導致資料夾被巢狀n層,軟體宕機,強制結束後,產生的資料夾有n多層,右鍵刪除說檔名太長無法刪除。網上找了很多方法都無法清理掉這個巢狀的資料夾,折磨了n久,...

Qt中listwidget中刪除item的方法

一 要想長按刪除qlistwidget的item,必須重寫滑鼠事件,所以需要繼承qlistwidget重寫自己的mylistwidget。分享一下我寫的類 h檔案 ifndef cjwlistwidget h define cjwlistwidget h include include includ...