天天看點

QGraphicsScene管理QGraphicsItem(單擊/選擇/移動/縮放/删除)簡述操作細節示例

在圖形視圖架構中,qgraphicsscene 提供一個快速的接口,用于管理大量 item,qgraphicsitem 是場景中 item 的基類。

圖形視圖提供了一些典型形狀的标準 item,當然,我們也可以自定義 item。除此之外,qgraphicsitem 還支援以下特性:

滑鼠按下、移動、釋放和輕按兩下事件,以及滑鼠懸浮事件、滾輪事件和上下文菜單事件

鍵盤輸入焦點和鍵盤事件

拖放

分組:通過父子關系,或 qgraphicsitemgroup

碰撞檢測

下面,一起來看看 qgraphicsscene 對 qgraphicsitem 的管理,主要包括:單擊、選擇、移動、縮放、删除等。

<a href="#%e7%ae%80%e8%bf%b0">簡述</a>

<a href="#%e6%93%8d%e4%bd%9c%e7%bb%86%e8%8a%82">操作細節</a>

<a href="#%e7%a4%ba%e4%be%8b">示例</a>

<a href="#%e6%95%88%e6%9e%9c">效果</a>

<a href="#%e6%ba%90%e7%a0%81">源碼</a>

為了實作以上功能,我們主要實作了 qgraphicsscene 和 qgraphicsitem 對應的事件,通過滑鼠和鍵盤來操作。

操作細節主要包括:

選擇:點選左鍵、按 shift 鍵可以單選,按下 ctrl 可進行多選。

添加:點選左鍵

删除:點選右鍵,删除滑鼠下的 item;當按下 ctrl 選擇多個 items 時,按下 backspace 鍵,将選中的全部删除。

移動:點選左鍵,選擇 item,然後移動滑鼠;當按下 ctrl 選擇多個 items 時,可以移動選中的 items。

縮放:按 alt 鍵,然後滑鼠拖拽 item 的邊界。

在對應操作的事件中,我們輸出了一些調試資訊,以便跟蹤。

QGraphicsScene管理QGraphicsItem(單擊/選擇/移動/縮放/删除)簡述操作細節示例

custom_item.h:

custom_item.cpp:

使用很簡單,将 item 添加至 scene 中,通過 view 顯示即可。