a总体效果

主要功能

  1. 可以通过设置进行桌面壁纸的切换;
  2. 点击天气按钮可查看实时天气;
  3. 显示实时时间

部分代码

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实现桌面宠物相关推荐

  1. 基于Qt的桌面客户端组件化框架DT 开源啦

    这个是本人在工作中基于QT开发的组件化桌面开发框架,目前打算开源出来提供给大家,节省大家的开发时间和效率,希望对大家的开发有所帮助,也欢迎提出意见和改进建议 1. 为什么开源DT框架 DT框架,本身就 ...

  2. 基于WPF的桌面宠物开发(一) :WPF简介+环境搭建+简单界面

    目录 一.WPF简介 1.什么是WPF? 二.WPF环境搭建 1.Visual Studio安装 2.安装 ".Net桌面开发" 工具包 3.新建WPF项目 4.导入WpfAnim ...

  3. linux下qt制作日历,基于Qt的桌面日历程序设计及实现

    为了介绍具体的设计以及实现过程,首先简要介绍一下功能,接着,将根据功能点,逐项介绍各个功能具体的设计及实现. 功能概要 正确实现按月显示的公历日历.可以参考Qt中QCalendarWidget的实现或 ...

  4. 基于Qt的QSplashScreen实现桌面水印,在windows下置顶失效解决办法

    基于Qt的QSplashScreen实现桌面水印,但在windows下重复关闭启动水印程序后会出现置顶失效的现象 现象:通过线程启动-关闭-再启动水印操作后,水印程序会出现置顶失效的问题 解决方案:调 ...

  5. 基于QT ffmpeg的动态桌面壁纸

    基于QT ffmpeg的动态桌面壁纸 目前制作了一个基于QT ffmpeg的动态桌面壁纸,源码程序在github上 下面为链接: 动态壁纸软件 项目名为 DesktopDynamicWallpaper ...

  6. 基于Qt的Windows平台桌面蓝牙调试器软件

    基于Qt的Windows平台桌面蓝牙调试器软件 在进行嵌入式的调试时,我们经常需要下位机给主机打印数据来观察数据变化.绘制波形等进行调试.一般的做法可以是直接通过串口与PC进行数据通信(USB to ...

  7. 从无到有的基于QT软件的DIY桌面番茄钟(上)

    基于QT软件的DIY桌面番茄钟-上篇 前言 参考本教程(上篇)可实现的功能: 实现细节: Day 1: 需求导图: QT的安装: Day 2: 创建项目: 构建无边框界面(后续可添加缩放功能,未添加) ...

  8. 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子

      本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...

  9. 基于C#制作一个桌面宠物

    此文主要基于C#制作一个桌面宠物,可自定义宠物素材图片及打开外部exe的快捷菜单. 实现流程 1.1.创建项目 1.2.准备素材 1.3.控件设置 (1)PictureBox控件 (2)timer控件 ...

最新文章

  1. fiddler使用_fiddler基础使用
  2. Delegate,Action,Func,匿名方法,匿名委托,事件
  3. iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮
  4. python录入学生信息网_干货满满 | Python趣味编程教学实践
  5. SQL中binary 和 varbinary的区别
  6. 重建控制文件--Rebuild controlfile
  7. Spring深入学习之IOC与AOP
  8. Hadoop大数据开发技术
  9. 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第六节课笔记
  10. 老外用VB6写的Windows驱动备份软件
  11. 外汇天眼:标普9月制造业PMI改善至51.8,综合PMI升至49.3
  12. 高德离线数据api_高德地图Android API发布V1.0.4版本,增加离线地图功能
  13. feishu-飞书api
  14. 《神魔之塔》高傲女巫的化身「恶龙之怒 地狱级」通关
  15. iFunk翼超极本亲测心得
  16. break语句的题目
  17. 用Python校验下载文件的完整性(md5),游戏之类的大型文件
  18. v-for与v-if为什么不能同时用?
  19. Contest3303 - 2022跟随唐克练编程之《顺序结构》(upc)c++
  20. 中国第三代半导体名单!

热门文章

  1. 经典传染病SIS模型及仿真
  2. Mysql数据库读书笔记
  3. 《MySQL必知必会》读书笔记
  4. 奥运伙伴2008年活动
  5. dwr框架查看外放方法_硬核!教你三种方法,实现微信自定义修改地区!
  6. 英特尔OpenVINO工具套件高级课程实验操作记录与学习总结
  7. 歌尔2718硅咪 超小体积 S15OB383-058 S15OB381-055 S15OT421-001
  8. 纯css3圆柱模板立体图
  9. shell一文入门通
  10. Block,多态,数组排序