在Qt库中,`QGraphicsView` 是一个强大的组件,用于显示和操作复杂的2D图形场景。`QGraphicsView` 和与其紧密相关的 `QGraphicsScene` 类一起,为开发者提供了丰富的图形用户界面(GUI)功能,可以实现图像的缩放、平移、旋转以及对象的动态交互等高级特性。下面我们将深入探讨`QGraphicsView` 的核心概念、用法以及它在实际项目中的应用。 `QGraphicsView` 是一个视图类,负责将 `QGraphicsScene` 中的图形元素渲染到屏幕上。`QGraphicsScene` 是一个场景类,用于存储各种图形对象(如 `QGraphicsItem` 的实例)。通过将图形对象添加到场景中,然后在 `QGraphicsView` 中展示这个场景,开发者可以创建出具有复杂布局和交互的2D图形界面。 ### 核心概念 1. **图形场景(QGraphicsScene)**:是所有图形对象的容器,可以包含各种自定义的 `QGraphicsItem`,如图片、文本、自定义形状等。你可以向场景中添加、删除或移动对象,并设置它们的属性。 2. **图形项(QGraphicsItem)**:是场景中的基本元素,可以是简单的几何形状,也可以是自定义的复杂对象。每个 `QGraphicsItem` 都有自己的坐标系统,可以独立地进行旋转、缩放和移动。 3. **视图(QGraphicsView)**:负责将场景中的内容显示在窗口上。你可以通过调整视图的缩放级别、平移、旋转等属性来改变用户的观察视角。 4. **交互性**:`QGraphicsView` 支持鼠标和键盘事件,允许用户与场景中的图形对象进行交互,如拖动、选择、旋转等。 ### 使用方法 1. **创建场景和视图**:你需要创建一个 `QGraphicsScene` 实例,然后在窗口中添加一个 `QGraphicsView` 并将其关联到场景。 ```cpp QGraphicsScene *scene = new QGraphicsScene(this); QGraphicsView *view = new QGraphicsView(scene, this); ``` 2. **添加图形项**:使用 `QGraphicsScene::add*` 方法添加图形项,如 `addRect()`、`addPixmap()` 等。也可以创建自定义的 `QGraphicsItem` 子类并添加到场景。 ```cpp QGraphicsRectItem *rect = scene->addRect(0, 0, 100, 50); QGraphicsPixmapItem *pixmap = scene->addPixmap(QPixmap("image.png")); ``` 3. **设置视图属性**:你可以调整视图的放大/缩小比例、平移、旋转等,以改变用户看到的内容。 ```cpp view->setDragMode(QGraphicsView::ScrollHandDrag); // 启用拖动模式 view->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); // 旋转中心跟随鼠标 view->scale(2, 2); // 缩放2倍 view->translate(50, 50); // 平移 ``` 4. **处理交互**:重写 `QGraphicsItem` 的 `mousePressEvent()`、`mouseMoveEvent()` 等方法,实现对图形对象的交互。 ```cpp class CustomItem : public QGraphicsRectItem { public: void mousePressEvent(QGraphicsSceneMouseEvent *event) override { // 处理鼠标点击事件 } }; ``` 5. **自定义图形项**:如果你需要更复杂的交互或视觉效果,可以创建 `QGraphicsItem` 的子类,重写其绘图、碰撞检测和事件处理方法。 ### 应用场景 `QGraphicsView` 常用于创建图像编辑器、流程图工具、游戏界面、数据可视化应用等。它的灵活性使得它可以适应各种需求,从简单的图形布局到复杂的用户交互,都可轻松实现。 在 `graphics_test` 文件中,你可能找到了一个示例项目,展示了如何使用 `QGraphicsView` 创建图形界面。这个项目可能包含了场景设置、图形项的添加和交互功能的实现。通过分析和运行这个项目,你可以更直观地理解 `QGraphicsView` 的工作原理和使用技巧。 `QGraphicsView` 提供了一个强大的框架,用于构建具有2D图形交互功能的应用程序。通过熟练掌握其核心概念和用法,你可以开发出具有丰富视觉效果和用户体验的软件。
2025-09-18 14:47:44 6KB
1
这是一个QT的demo,可以用鼠标进行矩形的绘制,根据这个demo也可以绘制出其他的多边形 QT版本:5.15.2 VS版本:2019 1、鼠标绘制一个或多个矩形 2、鼠标放在矩形上可以按住拖动 3、鼠标放在矩形边缘可以拉长或拉短矩形的宽高 4、按住ctrl,滑动滚轮可以放大缩小矩形 5、鼠标右键矩形可以删除、保存 用法链接:https://menghui666.blog.csdn.net/article/details/134303558?spm=1001.2014.3001.5502 微博主页:https://menghui666.blog.csdn.net/
2024-01-26 08:55:38 18KB UI QGraphicsView
1
pyqt5使用QGraphicsView做弹出菜单
2023-12-26 09:36:39 14KB pyqt5 Python QGraphicsView
1
介绍 通过Qt的图形视图框架进行2D绘图并调用libusb进行通讯 软件架构 软件主要由两部分组成: 1、libusb的调用和使用; 2、qt图形视图框架的基本使用。 安装教程 使用QT打开工程文件; 修改.pro文件中的库路径; 设置kits,编译运行。 使用说明 主要介绍了libusb的设备打开,端口打开,以及中断方式传输数据; 主要介绍了Qt的视图框架QGraphicsView、QGraphicsScene和QGraphicsItems的基本使用; 利用QT的视图框架进行了基本图形的绘制,比如画点、画线、画矩形等。
2023-02-23 23:55:42 1.16MB Qt libusb QGraphicsView
1
【QT】基于QGraphicsView的显示控件,支持加载图片,卸载图片,支持鼠标放大、缩小、拖动,一件恢复出示状态。并且支持三种类型的图片,包含QPixmap、QImage、cv::Mat。 使用时只需要初始化该类,并将其添加到布局中即可。 当前开发的平台是基于Qt6.2.3+MSVC2019的,其他版本需要做相应的修改。 在使用上有相关疑问,请给我留言,或者进入到我的主页,查询相关博客,获取使用案例。 博客地址:https://blog.csdn.net/xiaohuihuihuige/article/details/128165275 喜欢就点个关注吧,更多qt自定义控件等你解锁。
2022-12-10 19:20:00 8KB QT 图像控件 QGraphicsView
1
QGraphicsView 支持拖拽缩放
2022-10-17 11:41:41 6KB QGraphicsView
1
使用 QGraphicsView、QGraphicsScene、QGraphicsItem进行简单的缩放,移动,旋转
2022-08-01 21:07:58 8KB Qt
1
应用QT QGraphicsview 显示图片,并加入了鼠标事件获取图片像素坐标,利用鼠标绘制矩形框选图片选区,选择的选区显示在Lable控件上。得到图片像素坐标以后,并利用OpenCV截取图片的的选区,显示在Qlable控件上面。本案例适用于利用QT+OpenCV综合开发图像处理相关应用程序,以及利用QGrapjicsView显示图片的相关案例。
2022-07-12 18:09:06 8KB qt Qgraphicsview opencv 图像处理
1
5.保证无毒 1.简单,方便,实用 3.实例可以自行改用 1.如有非法,本人无法律责任! 8.更多作品,查找标签“朱建强”7.下载,请杀毒! 4.如需联系我请看左边数字!1.如不知代表何物,那就放弃计算机吧! 0.还不懂?CSDN老板不让我上传联系方式。
2022-06-30 09:21:43 2.02MB 朱建强 QT C++ QGraphicsView
1
QGraphicsview_test.7z
2022-04-09 19:05:19 10KB QGraphicsview_te