首页 > 分享 > Qt5.7

Qt5.7

功能及其简单,代码行数列不过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

网址: Qt5.7 https://m.mcbbbk.com/newsview260732.html

所属分类:萌宠日常
上一篇: 从黑白格子到3D萌物美如画,虚拟
下一篇: 火影之最强白眼