Qt-桌面宠物

目录

一,演示(部分功能)

二,开发环境准备

三,部分代码实现

1.创建基础窗口

2.实现宠物动画

3.添加交互功能

4.系统托盘集成

5.行为模式实现

6.状态管理系统

7.资源打包部署

四,接受定制


一,演示(部分功能)

二,开发环境准备

        安装Qt Creator和Qt框架(建议5.14或更新版本) 配置C++编译环境(MSVC/MinGW) 准备素材资源(PNG序列帧/透明背景素材)

三,部分代码实现

1.创建基础窗口
QWidget *petWindow = new QWidget(nullptr, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
petWindow->setAttribute(Qt::WA_TranslucentBackground);
petWindow->setFixedSize(320, 489);

2.实现宠物动画

使用QMovie加载GIF动画或QLabel显示帧序列:

QLabel *petLabel = new QLabel(petWindow);
QMovie *petMovie = new QMovie(":/animations/idle.gif");
petLabel->setMovie(petMovie);
petMovie->start();
3.添加交互功能

实现鼠标拖拽和点击事件:

void PetWidget::mousePressEvent(QMouseEvent *event) {if (event->button() == Qt::LeftButton) {m_dragPosition = event->globalPos() - frameGeometry().topLeft();event->accept();}
}void PetWidget::mouseMoveEvent(QMouseEvent *event) {if (event->buttons() & Qt::LeftButton) {move(event->globalPos() - m_dragPosition);event->accept();}
}
4.系统托盘集成

创建右键菜单和托盘图标:

QSystemTrayIcon *trayIcon = new QSystemTrayIcon(QIcon(":/icon.png"), this);
QMenu *trayMenu = new QMenu();
trayMenu->addAction("退出", qApp, &QCoreApplication::quit);
trayIcon->setContextMenu(trayMenu);
trayIcon->show();
5.行为模式实现

添加随机移动和边缘检测:

void PetWidget::startRandomMovement() {QTimer *moveTimer = new QTimer(this);connect(moveTimer, &QTimer::timeout, [this]() {QPoint newPos = pos() + QPoint(qrand() % 10 - 5, qrand() % 10 - 5);newPos = ensureInScreenBounds(newPos);move(newPos);});moveTimer->start(1000);
}

6.状态管理系统

实现不同行为状态切换:

enum PetState { IDLE, WALK, SLEEP, EAT };
void setPetState(PetState state) {currentState = state;updateAnimation();updateBehavior();
}

7.资源打包部署

使用Qt资源系统(.qrc文件)打包素材 发布时通过windeployqt工具收集依赖项 可考虑使用打包软件制作安装包

四,接受定制

可以定制角色,实现对应功能

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

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

相关文章

C++编程学习(第19天)

局部变量和全局变量每一个变量都有其有效作用范围,这就是变量的作用域,在作用域以外是不能访问这些变量的。局部变量在一个函数内部定义的变量是局部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用他们,…

客流特征识别准确率提升 29%:陌讯多模态融合算法在零售场景的实战解析

原创声明本文为原创技术解析文章,涉及的技术参数与架构设计引用自《陌讯技术白皮书》,禁止任何形式的抄袭与转载。一、行业痛点:零售客流识别的技术瓶颈在零售数字化转型过程中,客流特征识别(包括性别、年龄分层、停留…

YOLOv8/YOLOv11 C++ OpenCV DNN推理

首先需要将yolov8/yolov11的pt文件转为onnx文件 from ultralytics import YOLO model YOLO("best.pt") model.export(format"onnx",opset11,dynamicFalse) 本次C工具使用vs2017,需要下载OpenCV包:https://opencv.org/releases/&a…

【Mysql】日志--错误日志、二进制日志、查询日志、慢查询日志

错误日志:数据库出现错误时,进行故障排除默认位置:/var/log/mysqld.log查看日志位置show variables like %log_error%查看日志tail -50 /var/log/mysqld.log二进制日志:记录了所有的DDL语句和DML语句,不包含查询(selec…

后端常用框架环境与软件详解

一、基础运行环境 1. JDK(Java Development Kit) 定义:Java 开发工具包,包含编译器、运行时环境(JRE)及核心类库 作用:提供 Java 程序开发和运行的基础环境,是所有 Java 应用的必备依…

本地服务器端部署基于大模型的通用OCR项目——dots.ocr

本地服务器端部署基于大模型的通用OCR项目——dots.ocrdots.ocr相关介绍本地服务器端部署第一步:安装cuda12.8与CUDNN8.9.7第二步:创建项目所需的依赖环境第三步:启动项目第四步:测试第五步:文本解析相关性测试第六步&…

Text2SQL 智能问答系统开发-spider验证集(三)

概述 已完成 基础 Text2SQL 功能实现 实现用户输入自然语言问题后,系统能够自动生成 SQL 并执行返回结果。用户交互优化 支持用户通过补充信息对查询进行调整,提升易用性。模糊时间处理机制 对“最近”“近期”等模糊时间关键词进行补全或引导&#xf…

ElementUI常用的组件展示

文章目录1、要使用ElementUI先导入组件库2、自定义表头,可以改为添加和批量删除的按钮3、Dialog模态框,主要用于添加和修改时展示信息4、抽屉5、消息提示:用于提示是否操作成功6、询问:常用于询问是否确定删除7、批量选择复选框8、…

在电脑上可以存储文件并合理备份文件的工具用哪个?

每天被群消息、报表、PPT 轮番轰炸的上班族,最怕的不是加班,而是——文件突然失踪!别再把“CtrlS”当护身符,今天一口气测完 4 款热门“文件保险箱”,看看谁才真正配得上你的 Deadline。 敬业签 首先登场的是敬业签&am…

JavaWeb(04)

MyBatis 时一款优秀的持久层框架,用于简化JDBC的开发 The MyBatis Blog 目录 MyBatis入门Mybatis基础CRUDMybatis动态SQL Mybatis入门 快速入门 JDBC介绍 数据库连接池 lombok 准备工作(创建springboot工程,数据库表user,实体类User) …

统计学1:伯努利模型的参数估计与等价性分析

伯努利模型的参数估计方法 1. 统计学习方法三要素对比方法模型策略算法极大似然估计概率模型经验风险最小化数值解贝叶斯估计概率模型结构风险最小化解析解2. 极大似然估计 2.1 模型设定 设P(x1)θP(x1)\thetaP(x1)θ,则P(x0)1−θP(x0)1-\thetaP(x0)1−θ 2.2 似然…

游戏行业DDoS攻防实战指南

一、游戏DDoS攻击特征分析游戏行业DDoS攻击呈现高度复合化特征,攻击手段日益专业化。2023年Akamai监测数据显示,63%的游戏服务器攻击采用UDP反射放大(如NTP、Memcached协议)与HTTP慢速攻击(如Slowloris)相结…

[自动化Adapt] 录制引擎 | iframe 穿透 | NTP | AIOSQLite | 数据分片

链接:https://github.com/OpenAdaptAI/OpenAdapt/wiki/OpenAdapt-Architecture-(draft) docs:OpenAdapt OpenAdapt 是一个开源项目,旨在 记录 和 回放 用户在计算机上的交互行为。 它如同智能助手般 观察 我们的操作(鼠标点击、…

ipv6学习

ipv6的历史背景和及展望ipv6普及不够,ipv4快要用完。ipv6技术部分ivp6包头结构ipv6不允许分片,减轻中间设备压力。IPv6 包头结构可按字段分层解析,核心特点是 固定头部长度(40 字节) ,将可选功能移至扩展头…

软件定义汽车 --- 电子电气架构的驱动

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

HTML5 语义元素

HTML5 语义元素 引言 HTML5 作为现代网页开发的基础,引入了许多新的语义元素,这些元素使得网页内容更加结构化,便于搜索引擎更好地理解和索引页面内容。本文将详细介绍 HTML5 中的语义元素,并探讨其在网页设计中的应用。 HTML5…

vue3 el-select el-option 使用

在 Vue 3 中,el-select 是 Element Plus 组件库中的一个选择器组件,它允许用户从下拉菜单中选择一个或多个选项。如果你想在使用 Vue 3 和 Element Plus 时让 el-select 支持多种选择(即多选),你可以通过设置 multiple…

windows搬运文件脚本

使用方法:copy_files_by_prefix.bat [目标目录] [结果目录] [文件名前缀] [可选参数:文件包含内容]echo off chcp 65001 >nul setlocal enabledelayedexpansion:: Check parameters if "%~3""" (echo Usage: %~nx0 [SourceDir] […

C++ 中 initializer_list 类型推导

在 C 中,initializer_list 是一种用于表示列表初始化的标准库模板类,提供了一种方便的方式来初始化容器或者进行函数调用时传递一组参数。initializer_list&& 类型推导涉及到右值引用和移动语义,这在现代 C 中变得越来越重要。initia…

自动驾驶中的传感器技术22——Camera(13)

1、可靠性验证的目标车载摄像头作为自动驾驶和高级驾驶辅助系统(ADAS)的核心传感器,其可靠性直接影响到行车安全。可靠性验证的目标如下:暴露产品缺陷:在研制阶段,通过测试发现并修正产品设计中的问题&…