1. 使用setBackgroundBrush()方法设置场景背景颜色时,整个视口区域都会变成该颜色。
背景介绍:
QGraphicsScene(场景)尺寸比QGraphicsView的视口尺寸小(具体可见下图)- 在场景类
CLaserSceneVizScene中设置了场景的背景色为灰色(gray)
我的猜想结果:
因为是对场景设置的背景,运行之前我猜测的效果是只有场景矩形区域(即200x200)部分为灰色,视口的其它区域还是保持默认色不变(默认是白色)。
实际我运行程序后,整个视口区域都变成了灰色,显示效果如下:

原因:
在Qt中,
QGraphicsView默认会填充整个视口区域,即便场景的实际大小小于视口大小。
解决:
如果只想让场景的矩形区域改变背景色怎么办?
答:创建一个矩形图元,使其大小和场景大小一样大,然后设置该矩形图元的背景色即可,代码实现如下。
#include <QGraphicsRectItem>
#include "LaserSceneVizScene.h"
CLaserSceneVizScene::CLaserSceneVizScene()
{
this->setSceneRect(0, 0, 200, 200);
// 添加一个矩形项作为背景
QGraphicsRectItem *background = new QGraphicsRectItem(0, 0, 200, 200);
QBrush brush(Qt::gray);
background->setBrush(brush);
this->addItem(background);
}
CLaserSceneVizScene::~CLaserSceneVizScene()
{
}
运行效果:

5389

被折叠的 条评论
为什么被折叠?



