当前位置: 首页 > article >正文

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


http://www.kler.cn/a/581239.html

相关文章:

  • Vue使用ScreenFull插件实现全屏切换
  • 基于STM32的智能家居门禁开锁控制系统(论文+源码)
  • 可复用的 Vue 轮播图组件
  • Unity 基础知识总结(持续更新中...)
  • SwiftUI 让视图自适应高度的 6 种方法(四)
  • 03_NLP常用的文本数据分析处理方法
  • 【AI落地应用实战】RAGFlow + 知识图谱Knowledge Graph + Deepseek + 知识库构建初步探索
  • Codeforces Round 1008 (Div. 2)(A-D)
  • Application.OnTime如何引用带参数的过程
  • 数据篇| App爬虫入门(一)
  • Python数据分析之机器学习基础
  • WinForm模态与非模态窗体
  • 刚刚!微调 DeepSeek 满血版正式开源。。。
  • 基于PyTorch的深度学习——机器学习3
  • 运维无忧:NebulaGraph Dashboard—— 集群监控的可视化神兵
  • okhttp源码解析
  • 【leetcode100】分割回文串
  • 流处理实战:Flink 在实时数据处理中的应用(状态管理、Watermark、窗口计算)
  • cesium1.126显示等高线
  • 生活小妙招之UE ViewPortUV-SceneTextureUV