Qt 官方示例学习:dragdroprobot

news2024/12/26 7:46:51

参考链接

  1. Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
  2. QGraphicsScene的功能

程序运行效果

在这里插入图片描述

要点

模块拆分

界面方面可以分为两个大体,色盘与机器人;

主体界面

  • 使用 QGraphicsScene 做为图形管理器,并利用 QGraphicsView 的派生类 GraphicsView 将视图显示出来;
  • 视图在创建时建立了自己的坐标系;
  • 在自身坐标系的基础上利用三角函数创建了10个色盘;
  • 色盘与机器人对象都被 QGraphicsScene 管理从而显示出来。

色盘

  • 项目中实现色盘的类是 ColorItem,这个类是 QGraphicsItem 的派生类;
  • 主要是重写了基类的方法,包括绘制、响应鼠标事件;
  • 色盘总共有10个,颜色在程序运行时随机生成;
  • 监测鼠标的左击、移动、释放事件,同时修改鼠标游标的显示,从而实现拖动的效果;

机器人

  • 这里体现了继承的思想,自定义基类 RobotPart(继承于 QGraphicsObject)。重写 QWidget 的拖动进入、拖动离开、拖动释放事件;
  • 机器人头、躯干、四肢均继承于 RobotPart,各自实现绘制、拖动效果。
  • 机器人类 Robot 同样继承于 RobotPart。在构造函数中,创建头部、躯干、四肢对象,通过设置每个部分的位置,将其拼凑为一个完整的机器人;
  • 添加动画管理。设置每个部件的动画行为,将其加入 QParallelAnimationGroup 中,最后开启动画即可。

涉及的Qt类

QGraphicsScene

  • QGraphicsScene 提供了接口来管理大量的2D图形 item(如圆,矩形,线等);
  • 自身不带有显示功能,只是管理 item。显示需要创建 GraphicsView
    • 当场景更改时(当项目移动或转换时),QGraphicScene 会发出 changed() 信号。若要删除项,请调用 RemoveItem()
  • 可以从 QGraphicsView 传播事件;
    • 可以设置焦点、检测焦点的获得与失去、获取鼠标事件;

QGraphicsView

  • 提供一个窗口,用于显示 QGraphicsScene 的内容;如果显示不全,会展示滚动条;

QGraphicsItem

  • QGraphicsItem 类是 QGraphicsScene 中所有图形项的基类;
  • QGraphicsEllipseItem 提供椭圆项
  • QGraphicsLineItem 提供直线项
  • QGraphicsPathItem 提供任意路径项
  • QGraphicsPixmapItem 提供pixmap项
  • QGraphicsPolygonItem 提供多边形项
  • QGraphicsRectItem 提供矩形项
  • QGraphicsSimpleTextItem 提供简单的文本标签项
  • QGraphicsTextItem 提供高级文本浏览器项

QGraphicsObject

  • QGraphicsObject 继承自 QObjectQGraphicsItem

QDrag

参考链接

  1. QDrag

主要实现拖放方面的逻辑;

QMimeData

拖放的时候,用于存储色盘的信息;

QParallelAnimationGroup

动画组,管理每个控件的动画;

QPropertyAnimation

设置某个控件的动画行为;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

破译大脑的黑匣子,离不开这把“钥匙”

得了脑卒中,身体还能恢复如初吗? 这个真实的案例,也许会给很多人带去欣慰。2022年吉林大学第一医院的一位脑卒中患者,从入院到手术完成只用了75分钟,三周后完全康复,回归正常生活。 以计算之力守护生命之光…

聚观早报 | Apple Music推出新功能;苹果汽车最早于2026年发布

今日要闻:苹果Apple Music推出新功能;微软向索尼提供10年游戏协议;Adobe裁员约百人以削减成本;苹果汽车最早于2026年发布;微软考虑开发一款“超级应用”苹果Apple Music推出新功能 12 月 7 日消息,据报道&a…

[附源码]Python计算机毕业设计Django智慧园区运营管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Jetson NX 增加 swap空间

在开启多路测试的时候,发现SWAP空间不够了,板子非常的卡,解决的办法就是增加SWAP空间。 增加空间 生成swapfile文件操作如下 #新增swapfile文件大小自定义 sudo fallocate -l 4G /var/swapfile #配置该文件的权限 sudo chmod 600 /var/swa…

2023中国AIoT产业全景图谱报告发布,小匠物联荣获行业先锋大奖

12月7日,由智次方主办的「中国AIoT产业年会」在深圳成功举办。与会嘉宾包括原国务院参事石定寰、中国工程院院士倪光南、中国工程院院士张平、亚信集团联合创始人田溯宁等各个领域重量级专家。小匠物联作为参展单位,出席本次大会,并获得了年会…

深入理解Linux网络技术内幕(十二)——中断事件一般性参考数据

文章目录前言统计数据通过/proc和sysfs文件系统调整本部分涉及的函数和变量本部分涉及的文件和目录前言 这篇博客的内容不是很多,主要是介绍几种一般性信息,适用于前面所讲涉及中断事件和帧的处理 统计数据 有关帧接收的统计数据保存在各个CPU数组net…

SMOKE模型排放清单处理技术及在多模式下实践应用方法与VOCs排放量核算

【查看原文】SMOKE模型排放清单处理技术及在多模式下实践应用方法与VOCs排放量核算 随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越来越多的关注。大气污染…

嵌入式开发为啥不适合macOS系统?

关注星标公众号,不错过精彩内容作者 | strongerHuang微信公众号 | strongerHuangMac电脑适合做嵌入式开发吗?不定期有小伙伴问我类似的问题,我的回答是:不适合!至于为什么,只要你用心观察一下身边做嵌入式软…

入行必看:数字后端工程师有哪些就业机会?

今年高校毕业生人数首破千万,对于即将踏入IC这个行业的应届生来说,今年的就业形势不大乐观。 很多迷茫的同学问了我一些问题: 如果我开始做一名后端工程师,5年后我会做些什么?我能切换到一个设计的工作吗&#xff1f…

数据图表工具-FineReport数字控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 1.2.1 填报控件 填报报表中可以通过该控件输入数字信息(整数、负数、小数),录入填报的数据,如下图所示: 1.2.2 参数控件 参数面板处可以通过该…

[附源码]Python计算机毕业设计SSM基于网络C++实验管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

只会用 Go 写 O(N²) 的冒泡排序算法?来看看优化后最好情况下的 O(N) 算法吧

只会用 Go 写 O N 的冒泡排序算法?来看看优化后最好情况下的 O N 算法吧冒泡排序图片演示普通的冒泡排序算法优化算法小结耐心和持久胜过激烈和狂热。 哈喽大家好,我是陈明勇,今天分享的内容是使用 Go 实现冒泡排序算法。如果本文对你有帮助&…

单商户商城系统功能拆解43—应用中心—门店自提

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

岗位认识---算法工程师、数据分析

1,算法工程师 1.1 定义 AI算法 算法能力工程能力业务能力 算法工程师 算法职位名称: 算法工程师(机器学习大类) NLP(自然语言处理)算法工程师 CV(计算机视觉)算法工程师 CG&…

Vision Transformer with Deformable Attention

论文地址:https://arxiv.org/abs/2201.00520 代码地址:https://github.com/LeapLabTHU/DAT Abstract Transformers 最近在各种视觉任务上表现出了卓越的性能。大的,有时甚至是全局的感受野赋予了 Transformer 模型比 CNN 模型更高的表示能力…

Kubelet v1.25.x源码——syncLoop

1. 环境说明 Kubernetes源码版本:remotes/origin/release-1.25 Kubernetes编译出来的Kubelet版本:Kubernetes v1.24.0-beta.0.2463ee7799bab469d7 Kubernetes集群实验环境:使用Kubernetes v1.25.4二进制的方式搭建了一个单节点集群 K8S 单节…

RNA-seq 详细教程: `DESeq2` 差异表达分析(7)

学习目标 了解如何设计公式了解如何使用 DESeq2 执行差异表达分析1. DE 分析 差异表达分析工作流程的最后一步是将原始计数拟合到 NB 模型并对差异表达基因进行统计检验。在这一步中,我们本质上是想确定不同样本组的平均表达水平是否存在显著差异。 Paul Pavlidis, …

C语言第二十课:实用调试技巧

目录 前言: 一、Bug: 二、调试: 1.调试是什么: 2.调试的基本步骤: 3. Debug 与 Release : 三、在Windows环境下进行调试: 1.调试环境的准备: 2.调试的快捷键: 3.调试…

【嵌入式硬件芯片开发笔记】HART调制解调器AD5700芯片配置流程

【嵌入式硬件芯片开发笔记】HART调制解调器AD5700芯片配置流程 低功耗HART调制解调器 适用于AD5700/AD5700-1 我的是XTAL_EN接地,CLK_CFG的两个引脚由同一个GPIO控制 初始时HART_CLK_CFG输出低电平 由RTS引脚控制调制/解调。当RTS处于高电平时,为解调&…

React源码(一): render createElement

React源码——渲染(render && createElement)的简单实现 前言 当前市面上公司对React需求越来越大主, 对于React的源码学习必须提上日程 初始化项目 React脚手架创建项目 全局安装npm install -g create-react-app创建项目create-react-app M…