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 天前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀1 天前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程1 天前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt1 天前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
~kiss~1 天前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码1 天前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理
ms72wx1 天前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
外收内放1 天前
FastAPI猜字谜实战(4):让AI主持人开口
开发语言·python·学习·fastapi
叶子野格1 天前
《JAVA学习:前置知识》
学习
小猪佩奇TONY1 天前
Linux 内核学习(19) --- linux swap 机制
linux·学习·swap·kswapd