基于Qt实现桌面宠物
a总体效果
主要功能
- 可以通过设置进行桌面壁纸的切换;
- 点击天气按钮可查看实时天气;
- 显示实时时间
部分代码
widget.h
#pragma once#include <QWidget>
#include <QPixmap>
#include<qlabel.h>
#include<QPushButton>
#include"desktopwidget.h"
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void updateRoleAnimation();bool eventFilter(QObject* watched, QEvent* ev) override;void initBtn();
private:QLabel* roleLabel;qint8 curFrame; //当前帧QPushButton* closeBtn;QPushButton* cutBtn;QPushButton* openBtn;DesktopWidget* desktopWidget;};
desktopwidget.h
#pragma once#include <QWidget>
#include<QLabel>
#include<QPixmap>
class DesktopWidget : public QWidget
{Q_OBJECTpublic:DesktopWidget(QWidget *parent = nullptr);~DesktopWidget();void setAllWallpaper();void setPixmap(const QString& fileNname);
private:QLabel* bkLabel; //放壁纸QPixmap bkPixmap;
};
widget.cpp
#include "widget.h"
#include<QTimer>
#include<QGraphicsDropShadowEffect>
#include<QMouseEvent>
#include<QFileDialog>
Widget::Widget(QWidget *parent): QWidget(parent), roleLabel(new QLabel(this)),curFrame(0), desktopWidget(new DesktopWidget)
{//去掉窗口的边框,和让背景透明setWindowFlags(Qt::WindowType::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);//使用定时器去更新动画QTimer* updateTimer = new QTimer(this);updateTimer->callOnTimeout(this, &Widget::updateRoleAnimation);updateTimer->start(500);//给窗口设置阴影QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect(this);effect->setColor(QColor(230, 231, 232,220));effect->setBlurRadius(5);this->setGraphicsEffect(effect);this->installEventFilter(this);roleLabel->resize(500, 500);desktopWidget->show();initBtn();
}Widget::~Widget()
{}void Widget::updateRoleAnimation()
{QString qss("background-repeat:no-repeat;");roleLabel->setStyleSheet(qss+QString("background-image:url(:/resource/desktopRole/summerGril/%1.png);").arg(curFrame));curFrame = (curFrame + 1) % 6;
}bool Widget::eventFilter(QObject* watched, QEvent* ev)
{QMouseEvent* mouseev = static_cast<QMouseEvent*>(ev);//判断鼠标左键按下static QPoint begpos;if (ev->type() == QEvent::MouseButtonPress){begpos = mouseev->globalPos() - this->pos();}//判断鼠标移动else if (ev->type() == QEvent::MouseMove &&mouseev->buttons() & Qt::MouseButton::LeftButton){this->move(mouseev->globalPos() - begpos);}return false;
}void Widget::initBtn()
{closeBtn = new QPushButton(this);cutBtn = new QPushButton(this);openBtn = new QPushButton(this);closeBtn->setGeometry(300, 200, 32, 32);cutBtn->setGeometry(300, 240, 32, 32);openBtn->setGeometry(300, 280, 32, 32);closeBtn->setObjectName("closeBtn");closeBtn->setStyleSheet("background-image:url(:/resource/button/quit.png);}");cutBtn->setStyleSheet("background-image:url(:/resource/button/cut.png);");openBtn->setStyleSheet("background-image:url(:/resource/button/open.png);");this->setStyleSheet("QPushButton{background-color:rgb(64,173,250);\border:none;border-radius:5px;}\
QPushButton#closeBtn:hover{background-color:rgb(233,31,48);}");connect(closeBtn, &QPushButton::pressed, this, &Widget::close);connect(openBtn, &QPushButton::pressed, this, [=](){QString filename = QFileDialog::getOpenFileName(nullptr, "选择壁纸", "./", "Image (*.jpg *.png)");if (filename.isEmpty()){return;}desktopWidget->setPixmap(filename);});
}
关注私信博主可获得全部资源
基于Qt实现桌面宠物相关推荐
- 基于Qt的桌面客户端组件化框架DT 开源啦
这个是本人在工作中基于QT开发的组件化桌面开发框架,目前打算开源出来提供给大家,节省大家的开发时间和效率,希望对大家的开发有所帮助,也欢迎提出意见和改进建议 1. 为什么开源DT框架 DT框架,本身就 ...
- 基于WPF的桌面宠物开发(一) :WPF简介+环境搭建+简单界面
目录 一.WPF简介 1.什么是WPF? 二.WPF环境搭建 1.Visual Studio安装 2.安装 ".Net桌面开发" 工具包 3.新建WPF项目 4.导入WpfAnim ...
- linux下qt制作日历,基于Qt的桌面日历程序设计及实现
为了介绍具体的设计以及实现过程,首先简要介绍一下功能,接着,将根据功能点,逐项介绍各个功能具体的设计及实现. 功能概要 正确实现按月显示的公历日历.可以参考Qt中QCalendarWidget的实现或 ...
- 基于Qt的QSplashScreen实现桌面水印,在windows下置顶失效解决办法
基于Qt的QSplashScreen实现桌面水印,但在windows下重复关闭启动水印程序后会出现置顶失效的现象 现象:通过线程启动-关闭-再启动水印操作后,水印程序会出现置顶失效的问题 解决方案:调 ...
- 基于QT ffmpeg的动态桌面壁纸
基于QT ffmpeg的动态桌面壁纸 目前制作了一个基于QT ffmpeg的动态桌面壁纸,源码程序在github上 下面为链接: 动态壁纸软件 项目名为 DesktopDynamicWallpaper ...
- 基于Qt的Windows平台桌面蓝牙调试器软件
基于Qt的Windows平台桌面蓝牙调试器软件 在进行嵌入式的调试时,我们经常需要下位机给主机打印数据来观察数据变化.绘制波形等进行调试.一般的做法可以是直接通过串口与PC进行数据通信(USB to ...
- 从无到有的基于QT软件的DIY桌面番茄钟(上)
基于QT软件的DIY桌面番茄钟-上篇 前言 参考本教程(上篇)可实现的功能: 实现细节: Day 1: 需求导图: QT的安装: Day 2: 创建项目: 构建无边框界面(后续可添加缩放功能,未添加) ...
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...
- 基于C#制作一个桌面宠物
此文主要基于C#制作一个桌面宠物,可自定义宠物素材图片及打开外部exe的快捷菜单. 实现流程 1.1.创建项目 1.2.准备素材 1.3.控件设置 (1)PictureBox控件 (2)timer控件 ...
最新文章
- fiddler使用_fiddler基础使用
- Delegate,Action,Func,匿名方法,匿名委托,事件
- iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮
- python录入学生信息网_干货满满 | Python趣味编程教学实践
- SQL中binary 和 varbinary的区别
- 重建控制文件--Rebuild controlfile
- Spring深入学习之IOC与AOP
- Hadoop大数据开发技术
- 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第六节课笔记
- 老外用VB6写的Windows驱动备份软件
- 外汇天眼:标普9月制造业PMI改善至51.8,综合PMI升至49.3
- 高德离线数据api_高德地图Android API发布V1.0.4版本,增加离线地图功能
- feishu-飞书api
- 《神魔之塔》高傲女巫的化身「恶龙之怒 地狱级」通关
- iFunk翼超极本亲测心得
- break语句的题目
- 用Python校验下载文件的完整性(md5),游戏之类的大型文件
- v-for与v-if为什么不能同时用?
- Contest3303 - 2022跟随唐克练编程之《顺序结构》(upc)c++
- 中国第三代半导体名单!