QGraphicsView* view = new QGraphicsView(this); QGraphicsScene* scene = new QGraphicsScene(this);
时间: 2024-02-02 20:57:42 浏览: 64
这段代码创建了一个名为 `view` 的 `QGraphicsView` 对象,并将其添加到当前对象的父对象中。接着创建了一个名为 `scene` 的 `QGraphicsScene` 对象,并将其添加到当前对象的父对象中。这个场景可以在视图中显示,它可以包含各种 `QGraphicsItem` 对象(如 `QGraphicsPixmapItem`、`QGraphicsTextItem` 等),这些对象可用于绘制图形和文本等内容。通过 `view->setScene(scene)` 将 `scene` 对象设置为 `view` 的场景,即在视图中显示场景中的内容。
相关问题
QGraphicsView* view = new QGraphicsView(this); QGraphicsScene* scene = new QGraphicsScene(this);使用这两个时,左上角会多一个小图
这个小图是 QGraphicsView 的默认背景,它通常用于显示场景区域的边框。如果你不希望显示这个小图,可以通过以下两种方式之一来禁用它:
1. 在创建 QGraphicsView 对象时,通过以下代码禁用默认背景:
```cpp
QGraphicsView* view = new QGraphicsView(this);
view->setBackgroundBrush(Qt::NoBrush);
```
2. 在设置场景时,通过以下代码设置场景的背景为透明色:
```cpp
QGraphicsScene* scene = new QGraphicsScene(this);
scene->setBackgroundBrush(Qt::transparent);
QGraphicsView* view = new QGraphicsView(scene, this);
```
这样就可以禁用默认背景,让视图区域完全透明。
QGraphicsView* view = new QGraphicsView(this); QGraphicsScene* scene = new QGraphicsScene(this);在.h文件中使用这两个时,左上角会多一个缩略小图
这个缩略小图是 QGraphicsView 的默认行为,它用来显示整个场景的缩略图。如果你不想显示这个缩略图,可以通过以下两种方法解决:
方法一:在构造函数中设置
在构造函数中添加以下代码:
```
view->setViewport(new QOpenGLWidget);
view->setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing, true);
view->setRenderHint(QPainter::Antialiasing, false);
view->setRenderHint(QPainter::SmoothPixmapTransform, false);
view->setDragMode(QGraphicsView::ScrollHandDrag);
view->setOptimizationFlag(QGraphicsView::DontSavePainterState, true);
```
这些设置可以关闭缩略图,并且可以提高绘制效率。
方法二:在显示前设置
在显示前,添加以下代码:
```
view->setScene(scene);
view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
view->setDragMode(QGraphicsView::ScrollHandDrag);
view->setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing, true);
view->setOptimizationFlag(QGraphicsView::DontSavePainterState, true);
```
这些设置同样可以关闭缩略图,并且可以提高绘制效率。
阅读全文