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