Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物

原创 2017年08月29日 17:13:50

功能及其简单,代码行数列不过100行,下面看看运行结果



程序原理:

①窗口置顶,去标题栏和边框;

②重写鼠标事件(鼠标左键、右击、拖动坐标换算);

③播放gif文件;

下面是.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QMovie>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);

private:
    Ui::Widget *ui;

    QPixmap m_MainWidgetImage;
    bool m_dragging;	//是否正在拖动
    QPoint m_startPosition; //拖动开始前的鼠标位置
    QPoint m_framePosition;	//窗体的原始位置

};

#endif // WIDGET_H


.cpp文件:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //gif动态标签(有钱)
    setWindowTitle("山寨宠物");
    QMovie *MyPetMovie = new QMovie(":/timg.gif");
    ui->MyPetlabel->setMovie(MyPetMovie);

    setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground);
    setWindowFlags(Qt::FramelessWindowHint |Qt::WindowStaysOnTopHint);

    MyPetMovie->start();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons()&Qt::LeftButton)
    {
        if (m_dragging)
        {
            //delta 相对偏移量
            QPoint delta = event->globalPos() - m_startPosition;
            //新位置:窗体原始位置+偏移量
            move(m_framePosition + delta);
        }
    }
    QWidget::mouseMoveEvent(event);
}

void Widget::mousePressEvent(QMouseEvent *event)
{
    //响应左键
    if (event->button() == Qt::LeftButton)
    {
        m_dragging = true;
        m_startPosition = event->globalPos();
        m_framePosition = frameGeometry().topLeft();
    }
    QWidget::mousePressEvent(event);
}

void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    m_dragging = false;
    QWidget::mouseReleaseEvent(event);
}

Widget::~Widget()
{
    delete ui;
}

为了方便学习,我把整个工程全部打包了,有需要的读者可以下载,下载地址如下:

http://download.csdn.net/download/qq78442761/9955784

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/77680126

<em>桌面宠物</em>程序<em>源代码</em>

C#<em>桌面宠物源码</em>(貌似卡卡助手) 立即下载 上传者: baozi5270497 时间: 2008-11-08 综合评分: 4 积分/C币:3 桌面宠物的<em>制作</em>(不规则窗体的<em>制作</em>). 立即下载...
  • 2018年04月16日 00:00

<em>桌面宠物</em>开发<em>源码</em>

<em>桌面宠物</em>的<em>制作</em>(不规则窗体的<em>制作</em>). 立即下载 上传者: apoloye 时间: 2009...<em>桌面宠物</em>开发<em>源码</em> 会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0 为了...
  • 2018年04月13日 00:00

Qt|C/C++仿QQ宠物

  • 2017年08月29日 16:58
  • 160KB
  • 下载

仿QQ聊天程序

仿QQ聊天程序 转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907 一、设计内容及要求 1.1综述 A.系统概述 我们要做的就是类似QQ这样的面向企业内部的聊天...
  • u012027907
  • u012027907
  • 2014-03-16 00:57:19
  • 8854

<em>桌面宠物</em>程序V<em>C源码</em>学习_桌面裸男狂奔

<em>桌面宠物</em>程序V<em>C源码</em>学习,GDI学习<em>源码</em>,程序实例为一个裸男在桌面上狂奔。综合评分:4 收藏(2)评论(6)举报 所需: 3积分/<em>C</em>币 下载个数: 68 开通VIP 立即下载 ...
  • 2018年04月13日 00:00

Android-APP之桌面宠物

Android-APP之桌面宠物 源码:https://github.com/benxhinGH/Desktopet.git        本是需要研究android-app漏洞挖掘,那前提就是要...
  • lee_ham
  • lee_ham
  • 2017-06-25 23:45:52
  • 894

C#QQ宠物源代码,非常有意思

  • 2009年03月28日 15:10
  • 685KB
  • 下载

登陆QQ宠物易语言【纯源码】于2015.6.27测试成功

  • 2015年06月27日 10:20
  • 134KB
  • 下载

11款免费好用的源代码管理桌面应用

重复做着同一件事情是对宝贵时间的一种浪费,就拿我们平时编辑代码一样,一遍又一遍地复制粘贴同一条或同一段代码,浪费了时间不说,工作效率又何在? 幸运的是,我们有可用、好用的代码管理软件,能够在我们...
  • chendeng8899
  • chendeng8899
  • 2014-08-16 14:15:40
  • 1276

QT之桌面精灵实现(一) --- 透明窗体和图片绘制

关于QT种种,之前已经吐槽过了,打算写几篇记录一下桌面精灵的制作过程,不过由于是过了挺长时间才想要写,所以之前的一些东西都忘得差不多了,总之想起多少写多少。 桌面精灵的第一步,就是要把一个精...
  • fg5823820
  • fg5823820
  • 2012-12-11 22:18:17
  • 4617
收藏助手
不良信息举报
您举报文章:Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
举报原因:
原因补充:

(最多只允许输入30个字)