Graphics/View框架被用来存放、显示二维图形元素,处理对图形元素进行操作的交互指令。(例如,可以使用鼠标和键盘与场景中的项目进行交互。 QGraphicsView将鼠标和按键事件转化为场景事件,并转发到可视化的场景中。)
该框架主要包括三个类:QGraphicsScene(场景)、QGraphicsView(视图)、QGraphicsItem(图元)。
QGraphicsItem表示被显示的图形元素
QGraphicsScene表示囊括了所有图形元素的场景。该类只表示一个场景由哪些图形元素组成,并不负责显示其中的元素。一个场景分为三个层:图元层、前景层和背景层。场景的绘制总是从背景层开始,然后是图形项层,最后是前景层。
QGraphicsView在可滚动视口中可视化一个场景中的部分或者全部图形元素。一个场景可以对应多个QGraphicsView对象,以显示一个场景的不同区域,或者以不同的方式来显示该场景。默认情况下,在第一次显示视图时会自动检测可视化区域(通过调用 QGraphicsScene::itemsBoundingRect())。要自己设置可视化区域矩形,可以调用 setSceneRect()。这将适当地调整滚动条的范围。请注意,尽管场景支持几乎无限大小,但滚动条的范围不会超过整数范围(INT_MIN、INT_MAX)。
Qt图形视图框架:QGraphicsView 详解_友善啊,朋友的博客-CSDN博客
使用步骤:
1、创建场景
2、创建图元对象
3、使用场景的add函数将图元对象加入场景中
4、通过视图进行显示
示例代码:
QGraphicsScene *p_scene = new QGraphicsScene(this);
QGraphicsEllipseItem *ellip = new QGraphicsEllipseItem(1, 2, 800, 400, 0);
QGraphicsRectItem *rect = new QGraphicsRectItem(1, 2, 800, 400, 0);
if (p_scene != nullptr) {
p_scene->addText("33333333");
p_scene->addItem(ellip);
p_scene->addItem(rect);
p_scene->itemAt(100, 100, QTransform());
ui->graphicsView->setScene(p_scene);
ui->graphicsView->show();
}