news 2026/6/18 15:43:30

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 图形、流程图、组态软件开发;区分场景坐标视图坐标是开发重点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 3:21:18

为什么越来越多人选择聚合平台,而不是独个AI:GPT、Claude、Gemini?

这两年,很多人使用智能工具的习惯发生了明显变化。最早大家常常只用一个模型:有人偏爱 GPT 的通用能力,有人习惯 Claude 处理长文本,也有人看重 Gemini 在搜索和多模态上的表现。可用着用着,越来越多用户开始发现,只依赖单一工具,很多时候并不能真正解决问题。 于是,一…

作者头像 李华
网站建设 2026/6/18 15:40:25

30天实测3款AI编程工具,我选了最便宜的那个(附完整对比数据)

30天实测Cursor vs Claude Code vs Windsurf,我选了最便宜的那个(附对比数据)> 写在前面:我用Cursor、Claude Code、Windsurf三款工具各写了30天代码,完整记录了编码速度、代码质量、调试效率和真实花费。结论可能出…

作者头像 李华
网站建设 2026/6/9 3:20:08

usePrev

一、完整代码示例(React 18)import { useState, useRef, useEffect } from react;// 自定义 Hook:usePrev,保存上一次渲染的值 function usePrev(value) {const ref useRef();// 每次 value 变化后,把当前值存入 ref&…

作者头像 李华
网站建设 2026/6/18 15:37:37

告别卡顿!用BiSeNet V2在1080Ti上实现156FPS的实时街景分割(附PyTorch代码)

突破性能瓶颈:BiSeNet V2在1080Ti上的156FPS实战指南当自动驾驶系统需要在瞬息万变的城市街道中做出毫秒级决策时,当安防监控系统必须实时分析数十路高清视频流时,传统的语义分割模型往往显得力不从心。这些场景不仅要求算法具备像素级的精确…

作者头像 李华
网站建设 2026/6/10 5:22:00

因果提示优化(CPO)框架:提升大语言模型性能的关键技术

1. 因果提示优化(CPO)框架解析1.1 核心问题与创新点当前大语言模型(LLM)提示工程面临三个关键瓶颈:混淆偏差问题:传统方法将模型表现差异简单归因于提示修改,忽略了问题本身难度等混杂因素静态优…

作者头像 李华