qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene

code review!
 
文章目录
- qt-C++笔记之QGraphicsScene和 QGraphicsView中setScene、通过scene得到view、通过view得scene
 - 1.`setScene` 方法
 - 2.通过 `scene` 获取它的视图 (`views()`)
 - 3.通过 `view` 获取它的场景 (`scene()`)
 - 4.1~3总结
 - 5.常用的 scene()->add 开头的方法
 - 6.scene()->removeItem 方法
 - 7.在 mousePressEvent 中使用 scene()->add 和 scene()->removeItem
 - 8.省略 currentScene,直接使用 scene()-> 调用相关方法
 
1.setScene 方法
 
setScene 是 QGraphicsView 的方法,用于将一个 QGraphicsScene 设置为该视图的显示场景。一个视图可以显示一个场景,而一个场景可以被多个视图共享。
示例代码:
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsEllipseItem>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个场景QGraphicsScene scene;scene.setSceneRect(0, 0, 400, 300);  // 设置场景的范围// 在场景中添加一个椭圆QGraphicsEllipseItem *ellipse = scene.addEllipse(50, 50, 100, 100);// 创建一个视图,并将场景设置到视图中QGraphicsView view;view.setScene(&scene);  // 使用 setScene 设置场景view.resize(500, 400);view.show();return app.exec();
}
 
解释:
view.setScene(&scene)将场景scene设置到视图view中。- 场景负责管理图元(如椭圆、矩形等),而视图负责将场景渲染到屏幕上。
 
2.通过 scene 获取它的视图 (views())
 
QGraphicsScene 提供了 views() 方法,可以返回一个 QList<QGraphicsView*>,表示当前与场景关联的所有视图。因为一个场景可以被多个视图共享,所以返回的是一个列表。
示例代码:
#include <QApplication>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QDebug>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个场景QGraphicsScene scene;scene.setSceneRect(0, 0, 400, 300);// 在场景中添加一个矩形QGraphicsRectItem *rect = scene.addRect(100, 100, 200, 150);// 创建两个视图,显示同一个场景QGraphicsView view1;view1