当前位置: 首页 > 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.zskr.cn/news/1490324.html

相关文章:

  • 如何快速掌握GmSSL:国密算法与安全通信的终极指南
  • 告别缺货烦恼:手把手教你用AGM AG256SL100替代Altera EPM240T100C5N(附引脚兼容对照表)
  • 别再死记硬背了!用大白话和例子讲透BatchNorm和LayerNorm的区别
  • Java毕设实战资源:SpringBoot+Vue超市进销存系统(含数据库脚本、论文、答辩PPT与部署指南)
  • 【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
  • Windows 10下PyInstaller打包闪退?别慌,可能是Tcl/Tk环境变量在捣鬼(附详细排查步骤)
  • 2026年退火铁板实测评测:山东小草彩钢卷/山东小草彩钢扳/山东小草板/山东小草钢卷/山东彩涂卷/山东彩涂板/山东彩涂钢卷/选择指南 - 优质品牌商家
  • 告别串口打印:用SEGGER RTT高效调试GSensor浮点数据的实战记录
  • 实战:用GD32F303片内FLASH实现产品参数存储与OTA升级备份区
  • AMD GPU本地大模型部署:Ollama-for-amd技术突破与实战指南
  • 2026年乐平管道疏通实力对比 5家靠谱服务四维度横评 - 本地品牌推荐
  • 深入SM4算法核心:用C语言手动实现S盒与轮函数(附性能对比与优化思路)
  • Proteus仿真避坑指南:手把手教你搞定DS18B20单总线通信时序(附完整代码)
  • CUDA 11.1 安装避坑实录:手把手解决Nsight Compute失败与VS版本报错
  • 基于OpenPose的实时跌倒与异常动作检测系统(含可直接运行的Python工程+训练模型+测试视频)
  • 终极指南:3分钟将Figma设计转换为结构化JSON数据,让设计与代码无缝衔接
  • 不只是烧录:深入聊聊英飞凌UAD2pro调试器与UDE Memtool的通信协议(JTAG/DAP实战对比)
  • Python驱动AutoCAD的终极革命:如何用pyautocad实现工程设计的智能跃迁
  • 江苏高定木作口碑实测分享
  • 从零到实盘:手把手教你用Python和掘金量化SDK跑通第一个策略(附Anaconda环境配置避坑指南)
  • 别再死记硬背模板了!深入理解Dijkstra算法:从朴素版到堆优化版的性能对比与选择指南
  • 别再只依赖自动注释了!一份给单细胞新手的Marker基因筛选与验证避坑指南
  • 高考报名那张照片,是怎么被系统”认出来”的
  • 别再被PyCharm的Non-zero exit code (2)搞懵了!Python 3.6 + pip 21.3.1的专属避坑指南
  • 别再死磕源码编译了!用conda在Ubuntu 20.04上5分钟搞定PyTorch3D(附版本兼容表)
  • 别再死记硬背语法了!用OpenModelica 1.8.1手把手教你从物理方程到仿真模型
  • 异步电机矢量控制仿真:从理论公式到Simulink模块的“翻译”指南
  • 雷达目标检测避坑指南:恒虚警(CFAR)的窗长和保护间隔怎么调?实测数据说话
  • 2026免费抠图换背景详细教程:手机网页全覆盖,3种方法一看就会
  • 从MIT Cheetah 3的楼梯测试,聊聊足式机器人‘盲爬’背后的鲁棒性设计