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
英文地址,請注明出處:http://en.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)的核心傳感器,其可靠性直接影響到行車安全。可靠性驗證的目標如下:暴露產品缺陷:在研制階段,通過測試發現并修正產品設計中的問題&…