当前位置: 首页 > news >正文

Qt 进阶 06|图形视图框架 QGraphicsScene/QGraphicsView 图元与交互

一、框架三大核心组件

图形视图(Graphics View)用于2D 大型图形、流程图、组态、矢量绘图,三层结构:

  1. QGraphicsScene 场景:存放所有图元,数据层,管理元素集合;
  2. QGraphicsView 视图:可视化窗口,展示场景内容,支持缩放、平移;
  3. QGraphicsItem 图元:最小绘制单元(矩形、文字、图片、自定义图形)。

二、基础使用流程

  1. 创建场景 Scene
  2. 创建各类图元 Item,添加到场景
  3. 视图 View 绑定场景,显示内容

三、基础示例代码

cpp

运行

// 1. 创建场景 QGraphicsScene *scene = new QGraphicsScene(this); scene->setSceneRect(0,0,500,300); // 场景大小 // 2. 添加内置图元 scene->addRect(20,20,80,60, QPen(Qt::blue), QBrush(Qt::cyan)); // 矩形 scene->addText("Graphics View 测试"); // 文字 scene->addEllipse(150,50,60,60); // 圆形 // 3. 视图绑定场景 ui->graphicsView->setScene(scene); ui->graphicsView->setDragMode(QGraphicsView::RubberBandDrag); // 框选模式

四、图元交互(选中、拖拽)

给图元开启交互属性:

cpp

运行

QGraphicsRectItem *rectItem = scene->addRect(100,100,70,50); rectItem->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable); // ItemIsSelectable:可选中 // ItemIsMovable:可拖拽移动

五、常用功能

  • 视图缩放:ui->graphicsView->scale(1.2,1.2);
  • 清空场景:scene->clear();
  • 自定义图元:继承QGraphicsItem重写paint()boundingRect()

小结

Graphics View 适合海量 2D 图形、流程图、组态软件开发;区分场景坐标视图坐标是开发重点。

http://www.jsqmd.com/news/978600/

相关文章:

  • 51单片机+Proteus超声波测距:从公式推导到代码实现的保姆级复盘(含定时器配置详解)
  • 保姆级教程:用TTL线免拆机刷写电信悦ME IHO-3000高安版固件(附全部分区表解析)
  • 告别EEPROM!用GD32F303片内FLASH实现参数存储:以保存ADC校准值与系统状态为例
  • 智能游戏插件HunterPie:怪物猎人世界终极战斗助手完全指南
  • 接口自动化框架搭建实录:我是如何用Pytest+Requests管理上百个API测试用例的
  • 从家庭Wi-Fi到企业无线组网:一文搞懂FAT AP、FIT AP和AC到底该怎么选
  • 告别缺货烦恼:手把手教你用AGM AG256SL100替代Altera EPM240T100C5N(附引脚兼容对照表)
  • 别再死记硬背了!用大白话和例子讲透BatchNorm和LayerNorm的区别
  • 如何快速掌握GmSSL:国密算法与安全通信的终极指南
  • 【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
  • Java毕设实战资源:SpringBoot+Vue超市进销存系统(含数据库脚本、论文、答辩PPT与部署指南)
  • 别再傻傻分不清了!一文搞懂SDRAM、DDR、FLASH、ROM的区别与选型
  • Step 3.7 Flash开源模型实测 – 多模态 Agent 大脑更省Token
  • STM32F4实战:手把手教你移植SOEM 1.4.0驱动EtherCAT伺服(附源码与调试心得)
  • 2026年退火铁板实测评测:山东小草彩钢卷/山东小草彩钢扳/山东小草板/山东小草钢卷/山东彩涂卷/山东彩涂板/山东彩涂钢卷/选择指南 - 优质品牌商家
  • CANopen SDO通信原理拆解:以STM32F4读取一个16位变量为例,看懂每一帧数据
  • 脑白质粘弹性建模与分数阶微积分应用
  • 5mm铝板超声导波A0/S0模态计算与能量分布可视化MATLAB工具集
  • 深入蜂鸟E203内核:我是如何用riscv-tests验证RV32I每一条指令的?
  • Windows 10下PyInstaller打包闪退?别慌,可能是Tcl/Tk环境变量在捣鬼(附详细排查步骤)
  • SerialPlot隐藏技巧:除了看波形,还能这样玩转多通道数据流与CSV导出
  • Kotlin 探秘之旅:数据类型中的精妙设计——基础类型、包装类与智能转换的艺术
  • 不止于编辑器:如何用Vue + Codemirror打造一个带智能提示、执行历史和Diff对比的SQL工作台?
  • 用Kali的DDos-Attack工具做压力测试?安全研究员教你搭建本地靶场(VMware环境)
  • 实战:用GD32F303片内FLASH实现产品参数存储与OTA升级备份区
  • 单智能体落地实战:从 ReAct 到 Production-Ready AI Agent 全链路解析
  • 别再只盯着手册了!ADS1274硬件设计实战:从引脚配置到原理图避坑,手把手带你搞定四通道ADC
  • 2026佛山连锁眼镜店权威评测:佛山专业配眼镜、佛山儿童配镜、佛山太阳镜、佛山成人配镜、佛山散光配镜、佛山眼镜店售后选择指南 - 优质品牌商家
  • 别再死记硬背了!用FFmpeg实战拆解音视频面试里的‘秒开’与‘卡顿’难题
  • 告别串口打印:用SEGGER RTT高效调试GSensor浮点数据的实战记录