Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
生活随笔
收集整理的這篇文章主要介紹了
Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
功能及其簡單,代碼行數列不過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_OBJECTpublic: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
總結
以上是生活随笔為你收集整理的Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL入门之创建、更新、修改、复制、
- 下一篇: s3c2440移植MQTT