在使用 Qt Creator 開發繪圖工具時,採用雙緩衝(QImage + tempImage)機制實現基本繪製。老師要求新增「移動已繪製圖形」功能,並建議將圖形封裝為獨立物件,但初學者往往無從下手。
Qt 自帶的 QGraphicsView 框架已提供成熟的圖元管理機制,其核心類 QGraphicsItem 確立了經典設計範式:
paint() 方法,圖元知道如何畫自己。mousePressEvent()、mouseMoveEvent()、mouseReleaseEvent(),圖元自己響應拖拽、選中、縮放等交互。QGraphicsScene 負責管理所有圖元的增刪改查、碰撞檢測、層級排序;QGraphicsView 負責視口轉換、縮放、滾動。QGraphicsItem,實現 boundingRect()、paint()、滑鼠事件處理。RectItem、EllipseItem、LineItem,僅需實現各自繪製邏輯。QGraphicsView,關聯一個 QGraphicsScene 實例。scene->addItem(item)。QGraphicsItem::ItemIsMovable 標誌位開啟後,框架自動處理拖拽移動,無需手寫座標計算。採用物件導向 + 框架模式,將「圖形即物件」落地,實現高內聚、低耦合:繪製、命中測試、移動、序列化、撤銷/重做均可在單一物件內擴展,避免在雙緩衝像素矩陣上硬寫座標邏輯,大幅降低複雜度並提升可維護性。