目录

c学习之QT综合项目一

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

1.项目简介及创建

https://i-blog.csdnimg.cn/direct/1a0ceda0de6c4880a74060068b9d052d.png

https://i-blog.csdnimg.cn/direct/8901d1f75d9545abbf5a021ea5993e32.png

#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.导入资源

https://i-blog.csdnimg.cn/direct/bdda1d2543ab4ba7b138ad8e6a00c1ee.png

https://i-blog.csdnimg.cn/direct/1b000a8f37304974a70230dfb0ea02b8.png

3.鸟类创建

https://i-blog.csdnimg.cn/direct/10a58825956d4d6cab0d5b3f4fec6abe.png

https://i-blog.csdnimg.cn/direct/0aadd9446a3b476badea12b328191eaa.png

https://i-blog.csdnimg.cn/direct/3fa52a99851b4763ae4ed57c60f8e763.png

https://i-blog.csdnimg.cn/direct/229ab5618432453c8e4fccc97dc023b5.png

4.鸟动画实现

https://i-blog.csdnimg.cn/direct/be64f8704a4e45059149a201edbfaffb.png

https://i-blog.csdnimg.cn/direct/448264f461c64b828d0349ebb8af29b7.png

https://i-blog.csdnimg.cn/direct/e9a6b0eb0e7e4ef5bbb0bdfcc98ca4a0.png

5.鼠标拖拽

https://i-blog.csdnimg.cn/direct/503be60265394f479e69664ef2aee1d0.png

https://i-blog.csdnimg.cn/direct/a4d9fa1f1ed249128ef819332d071193.png

https://i-blog.csdnimg.cn/direct/3fae70e42681454f9ff63928b7552f02.png

6.自动移动

https://i-blog.csdnimg.cn/direct/d0452f28aa9b421fbded8e801f51fb36.png

https://i-blog.csdnimg.cn/direct/c7de897acb8f41bcb53cec6a7dd89d16.png

https://i-blog.csdnimg.cn/direct/300ee632495e40aaa95eded0d6b080c9.png

7.右键菜单

https://i-blog.csdnimg.cn/direct/c87247324f904c62a1603f7f49ee5152.png

https://i-blog.csdnimg.cn/direct/2e405e06ef354d649535513c02096b4e.png

https://i-blog.csdnimg.cn/direct/f5d13e3e3a964c78b62eb050a51f9c5f.png

8.窗口透明化

https://i-blog.csdnimg.cn/direct/8a5ce9d7db4d40848ec310e80fc43933.png https://i-blog.csdnimg.cn/direct/0822d32280e442faa96cc0b803f50e40.png

https://i-blog.csdnimg.cn/direct/2bc5122da1c44e58b2a77942c4225e31.png