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

