qt-C++筆記之創建和初始化 QGraphicsScene
和 QGraphicsView
并關聯視圖和場景的方法
code review!
參考筆記
1.qt-C++筆記之創建和初始化 QGraphicsScene
和 QGraphicsView
并關聯視圖和場景的方法
2.qt-C++筆記之QGraphicsScene和 QGraphicsView中setScene、通過scene得到view、通過view得scene
文章目錄
- qt-C++筆記之創建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并關聯視圖和場景的方法
- 1. 棧分配 `QGraphicsScene` 和 `QGraphicsView`
- 2. 堆分配 `QGraphicsScene` 和 `QGraphicsView`
- 3. 堆分配 `QGraphicsScene`,棧分配 `QGraphicsView`
- 4. 堆分配并利用父子關系管理
- 5. 使用 Qt Designer 通過 UI 文件創建(推薦方式之一)
- 總結比較
- 推薦使用方式
在使用 Qt 開發圖形界面應用程序時,
QGraphicsScene
和
QGraphicsView
是處理和顯示圖形項的核心類。正確地創建和初始化這兩個類對于應用程序的性能和內存管理至關重要。本節將詳細介紹創建和初始化
QGraphicsScene
和
QGraphicsView
的常見方式,分析它們之間的關系,并討論不同內存分配方式的優缺點及適用場景。
1. 棧分配 QGraphicsScene
和 QGraphicsView
QGraphicsScene scene;
QGraphicsView view(&scene);
特點
- 棧上分配:
scene
和view
都是在棧上分配的對象。 - 作用域管理:它們的生命周期由所在的作用域控制,離開作用域時會自動銷毀。
- 關聯方式:
view
在構造函數中接受scene
的地址,直接關聯二者。
優點
- 自動內存管理:不需要手動釋放內存,避免了內存泄漏的風險。
- 簡單易用:代碼簡潔明了,適合快速開發。
缺點
- 棧內存有限:棧內存空間較小,如果場景中包含大量圖形項,可能導致棧溢出。
- 生命周期受限:無法在作用域之外使用
scene
或view
,限制了它們的可用范圍。
適用場景
- 短生命周期的應用:如小型工具或臨時演示程序。
- 簡單場景:不需要大量圖形項或復雜交互的情況。