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.窗口透明化

相关推荐
工大一只猿1 分钟前
51单片机学习
嵌入式硬件·学习·51单片机
c0d1ng21 分钟前
量子计算学习(第十四周周报)
学习·量子计算
Hello_Embed7 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中8 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Magnetic_h9 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
研梦非凡9 小时前
ICCV 2025|从粗到细:用于高效3D高斯溅射的可学习离散小波变换
人工智能·深度学习·学习·3d
limengshi13839210 小时前
机器学习面试:请介绍几种常用的学习率衰减方式
人工智能·学习·机器学习
知识分享小能手11 小时前
React学习教程,从入门到精通,React 组件核心语法知识点详解(类组件体系)(19)
前端·javascript·vue.js·学习·react.js·react·anti-design-vue
周周记笔记12 小时前
学习笔记:第一个Python程序
笔记·学习
优雅鹅12 小时前
ARM、AArch64、amd64、x86_64、x86有什么区别?
arm开发·学习