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

版权声明:本文为博主原创文章,未经博主允许不得转载。

仿QQ聊天程序

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

2013-06-18《C++仿QQ系统设计与实…

仿QQ聊天系统   1.引言 1 1.1编写目的 1 1.2项目背景 1 1.3定义 2 1.4参考资料 2 2.总体设计 2 2.1需求概述 2 2.2软件结构 2 3.程序描述 ...
  • HXPshakele
  • HXPshakele
  • 2013年11月30日 20:33
  • 985

仿QQ聊天(4)—简单的聊天页面实现

点击好友item,跳转到PersonalCardActivity(名片页面), 之前一直在想怎么把这个圆形头像放到这个位置,想到的办法就是就一个帧布局,给帧布局指定一个坐标,让他固定在那里,这样就能...
  • u013278261
  • u013278261
  • 2015年11月05日 16:06
  • 507

java仿qq登陆界面

以前写过一次 只不过有点简陋  就又写了一个。。 package qq登陆; import java.awt.*; import java.awt.event.*; import java.io.IO...
  • su20145104009
  • su20145104009
  • 2015年10月14日 12:16
  • 2241

c++即时通讯程序

记录下我上大学的第一个程序项目。第一次写程序,遇到了好多挫折,也学到了好多的书本学不到的知识。 该程序主要是仿qq,实现了qq基本聊天的大部分功能包括视频聊天,语音消息,图片消息,添加好友,文件离线发...
  • MR_DUAN1105
  • MR_DUAN1105
  • 2017年03月06日 15:24
  • 1014

java实现简单的QQ登录界面

java在图形界面,不是太强项,但不是不可以做,它的开源是very nice! 实现代码如下(想实现完美的界面,可能要更多coding的支持): package com.ts.x.swing; ...
  • typa01_kk
  • typa01_kk
  • 2015年06月29日 16:45
  • 9117

仿QQ语言变声功能

仿QQ语言变声功能这次写的是QQ语言变声功能,这个功能想必大家都使用过,那么这个功能是怎么实现的呢? 在开发中一边触及和语音,视频,算法等等都和c/c++相关,我们这里也是使用的NDK,链接第三方动...
  • a847427920
  • a847427920
  • 2017年06月01日 14:50
  • 1300

BZOJ 1208 [HNOI2004] 宠物收养所 题解&代码

其实是一道简单的Splay题目【虽然我写了很久 据说【本来就是】用set+二分很容易就过啦,的确一个不需要maintain和pushdown的Splay和咸鱼没什么区别,不过第一次写Splay我觉得...
  • Rainbow6174
  • Rainbow6174
  • 2015年12月25日 13:39
  • 501

高仿精仿QQ空间ios源码

说明:本次QQ空间更新了以前非常基础的代码 ios源码下载: http://code.662p.com/list/12_1.html 更新内容 一 更新了登陆界面 二  增加...
  • chenhaimeimeng
  • chenhaimeimeng
  • 2015年12月14日 09:33
  • 1983

简述C和C++程序员学习历程

哈哈!有幸在某网站发现这篇文章,读罢,觉得蛮有道理,发来大家一起共勉之     总是被同学们问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。    一家之...
  • kingzone_2008
  • kingzone_2008
  • 2015年08月24日 19:42
  • 1779
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
举报原因:
原因补充:

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