功能及其简单,代码行数列不过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
.cpp文件:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
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)
{
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
相关知识
网址: Qt5.7 https://m.mcbbbk.com/newsview260732.html
上一篇: 从黑白格子到3D萌物美如画,虚拟 |
下一篇: 火影之最强白眼 |