在圖形視圖架構中,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 的邊界。
在對應操作的事件中,我們輸出了一些調試資訊,以便跟蹤。
custom_item.h:
custom_item.cpp:
使用很簡單,将 item 添加至 scene 中,通過 view 顯示即可。