基于Qt实现桌面宠物

news/2024/11/25 5:58:11/

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);});
}

关注私信博主可获得全部资源     

         

 


http://www.ppmy.cn/news/551413.html

相关文章

Python实现可以语音聊天的桌面宠物程序

目录 简介 程序 源代码 GUI DesktopWife.py MusicPlayer.py WeatherGui.py 语音 简介 普通的桌面宠物程序只能动一动&#xff0c;于是我给程序添加了语言&#xff0c;既可以聊天&#xff0c;也可以实现一些自动功能&#xff0c;不如搜索&#xff0c;打开程序什么的。 程序…

Android-APP之桌面宠物

Android-APP之桌面宠物 源码&#xff1a;https://github.com/benxhinGH/Desktopet.git 本是需要研究android-app漏洞挖掘&#xff0c;那前提就是要先了解android-app的内部原理。于是开始上手学习android-app&#xff0c;借机参加了腾讯提供的android移动开发课程。 这个app主…

python桌面宠物模块_利用python写个桌面挂件 | 手把手带大家做只桌面宠物呗

导语 前段时间有小伙伴留言说想让我带大家写写桌面小挂件&#xff0c;今天就满足一下留过类似言的小伙伴的请求呗~不过感觉写桌面的挂历啥的没意思&#xff0c;就简单带大家做一只桌面宠物吧~ 废话不多说&#xff0c;让我们愉快地开始吧~ 开发工具Python版本&#xff1a;3.6.4 …

用JavaScript写一个可以聊天的桌面宠物

好的,我们可以用 JavaScript 写一个聊天桌面宠物。首先,我们需要使用 JavaScript 的 GUI 库,比如 Electron 或 NW.js 来创建一个桌面应用程序。然后,我们可以使用文本输入框和文本框来构建聊天界面。我们可以使用 JavaScript 来处理用户输入,并使用语言处理库来解析用户的…

STM32实现延时

在STM32单片机中&#xff0c;实现延时一般都是使用定时器&#xff0c;既可以使用Systick定时器&#xff0c;也可以使用常规的定时器。 定时器在设置了定时并开启之后&#xff0c;就会进入自主运行模式&#xff0c;其中&#xff0c;初始化设置这一阶段是由CPU执行相应指令完成的…

linux桌面宠物

环境: ubuntu19.10 xfce4 步骤如下: python getpet.py(获取宠物动作图片) 然后会弹出来一个对话框&#xff0c;对话框里面你看中哪个宠物就用鼠标双击一下&#xff0c;然后终端就会开始下载这个宠物的图片 python start.py&#xff08;启动桌面宠物&#xff09; 小技巧: …

用QT实现一个简单的桌面宠物

有时候桌面空空的&#xff0c;或者屏幕空旷了&#xff0c;我们就可以找一点东西来点缀一下&#xff0c;那么桌面宠物是一个不错的选择。 作为一个程序猿&#xff0c;如何实现一个桌面宠物呢&#xff1f; 本文就给大家带来的是如何用qt提供一种思路并写一个简单的桌面宠物。 思…

桌面小宠物项目开发_C# 桌面宠物 示例源码(透明窗体)

【实例简介】 可以按时叫你吃饭可以控制在桌面上行走等等等等。。。。。。。。。。。。 【实例截图】 【核心代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syste…