c++学习之QT综合项目一

1.项目简介及创建

复制代码
#include "bird.h"
复制代码
复制代码
Bird::Bird(QWidget *parent) : QWidget(parent)
复制代码
{
复制代码
    //加载所有图片
复制代码
    for(int i = 0 ; i < this->max;i++)
复制代码
    {
复制代码
        QString str = QString(":/Bird/bird%1.png").arg(i+1);
复制代码
        this->m_bird_Pix.load(str);
复制代码
    }
复制代码
    //设置鸟的大小
复制代码
    this->setFixedSize(this->m_bird_Pix.width(),this->m_bird_Pix.height());
复制代码
复制代码
    //创建定时器
复制代码
    this->timer = new QTimer(this);
复制代码
复制代码
    //监听定时器
复制代码
    connect(timer,&QTimer::timeout,[=](){
复制代码
        QString str = QString(":/Bird/bird%1.png").arg(this->min++);
复制代码
        this->m_bird_Pix.load(str);
复制代码
        if(this->min > this->max)
复制代码
        {
复制代码
            this->min = 1;
复制代码
        }
复制代码
        emit changePix(); //告诉窗口正在做切图
复制代码
    });
复制代码
复制代码
    //创建菜单
复制代码
    this->m_Menu = new QMenu();
复制代码
    //监听菜单下的退出菜单项
复制代码
    connect(this->m_Menu->addAction("退出"),&QAction::triggered,[=](){
复制代码
        exit(0);
复制代码
    });
复制代码
}
复制代码
复制代码
void Bird::running()
复制代码
{
复制代码
    this->timer->start(70);
复制代码
}
复制代码
复制代码
void Bird::mousePressEvent(QMouseEvent *event)
复制代码
{
复制代码
    this->m_Pos = event->globalPos() -   ((QWidget *) (this->parent()))->frameGeometry().topLeft();
复制代码
    this->mouseDown = true; //鼠标按下,将状态改为true
复制代码
复制代码
    //右键菜单弹出
复制代码
    if(event->button() == Qt::RightButton)
复制代码
    {
复制代码
        this->m_Menu->popup(QCursor::pos());
复制代码
    }
复制代码
复制代码
    //窗口消失后 重置鼠标按下状态
复制代码
    connect(this->m_Menu,&QMenu::aboutToHide,[=](){
复制代码
        this->mouseDown = false;
复制代码
    });
复制代码
}
复制代码
复制代码
void Bird::mouseMoveEvent(QMouseEvent *event)
复制代码
{
复制代码
    //发送自定义信号,告诉窗口移动的位置
复制代码
    emit this->moving( event->globalPos() - this->m_Pos );
复制代码
}
复制代码
复制代码
void Bird::mouseReleaseEvent(QMouseEvent *event)
复制代码
{
复制代码
    //鼠标释放 ,视为鼠标没有按下
复制代码
    this->mouseDown = false;
复制代码
}
复制代码

2.导入资源

3.鸟类创建

4.鸟动画实现

5.鼠标拖拽

6.自动移动

7.右键菜单

8.窗口透明化

相关推荐
思扬09281 小时前
前端学习日记 - 前端函数防抖详解
前端·学习
小郝 小郝5 小时前
开启单片机
c语言·单片机·嵌入式硬件·学习·51单片机
小杜的生信筆記6 小时前
基于R语言,“上百种机器学习模型”学习教程 | Mime包
开发语言·学习·机器学习·r语言·sci
慕y2746 小时前
Java学习第一百二十二部分——HTTPS
网络协议·学习·https
醉卧红尘的鱼10 小时前
随机向量正交投影定理(Orthogonal Projection Theorem, OPT)_学习笔记
学习·算法
老虎062711 小时前
JavaWeb(苍穹外卖)--学习笔记18(Apache POI)
笔记·学习·apache
元契12 小时前
7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
学习
我们从未走散13 小时前
Redis学习笔记-----Redis内存回收
java·redis·笔记·学习
qq_3863226913 小时前
华为网路设备学习-28(BGP协议 三)路由策略
学习
驱动探索者14 小时前
瑞芯微 RK3588 平台驱动开发 学习计划
驱动开发·学习