Qt制作360安仔精灵

来源:互联网 发布:税务局知乎 编辑:程序博客网 时间:2024/04/29 06:10

有两个QLabel, 一个显示静态图片, 一个显示动态图片, 相互切换显示 ..


#ifndef TESTCHICKEN_H#define TESTCHICKEN_H#include <QtWidgets/QDialog>#include "ui_testChicken.h"#include <QPoint>class QMovie;class testChicken : public QDialog{Q_OBJECTpublic:testChicken(QWidget *parent = 0);~testChicken();private slots:void OnTimerOut();private:virtual void mousePressEvent( QMouseEvent* e);virtual void mouseMoveEvent( QMouseEvent* e);virtual void mouseReleaseEvent( QMouseEvent * e);bool CheckDragRegion(const QPoint &g_pos);private:Ui::testChickenClass ui;QMovie *movie;bool mbDragEnabled;QPoint mRelativePos;};#endif // TESTCHICKEN_H

#include "testChicken.h"#include <QMovie>#include <QTimer>#include <QMouseEvent>testChicken::testChicken(QWidget *parent): QDialog(parent){ui.setupUi(this);mbDragEnabled = false;mRelativePos = QPoint(0,0);setWindowFlags(windowFlags() | Qt::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);QPixmap pixmap("AnZai.png");ui.labImage->setPixmap(pixmap);movie = new QMovie("AnZai.gif");ui.labAnimation->setMovie(movie);ui.labAnimation->hide();QTimer* timer = new QTimer;timer->setInterval(3000);timer->start();connect(timer, SIGNAL(timeout()), this, SLOT(OnTimerOut()));}testChicken::~testChicken(){}void testChicken::OnTimerOut(){if(movie->state() == QMovie::Running) {movie->stop();ui.labAnimation->hide();ui.labImage->show();}else {movie->start();ui.labAnimation->show();ui.labImage->hide();}}void testChicken::mousePressEvent( QMouseEvent* e ){if(CheckDragRegion(e->globalPos())) {mbDragEnabled = true;mRelativePos= pos() - e->globalPos();}}void testChicken::mouseMoveEvent( QMouseEvent* e ){if(mbDragEnabled) {move(e->globalPos()+ mRelativePos);}}void testChicken::mouseReleaseEvent( QMouseEvent * e ){if(mbDragEnabled) {mbDragEnabled = false;}}bool testChicken::CheckDragRegion( const QPoint &g_pos ){QPoint pt = g_pos; QRect rcWnd = geometry(); //qDebug() << "pos: " << pt << "geometry: " << rcWnd; pt.setX(pt.x() - rcWnd.left()); pt.setY(pt.y() - rcWnd.top()); int nW = rcWnd.width();int nH = rcWnd.height(); QRect rcDrag(0,0, nW, nH);if(rcDrag.contains(pt)) {return true;}return false; }

详细代码已上传 : http://download.csdn.net/detail/robertkun/7403735

0 0
原创粉丝点击