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

qt启动等待动态图

#ifndefSPLASHSCREEN_H#defineSPLASHSCREEN_H#include<QLabel>#include<QGridLayout>#include<QTimer>#include<QPainter>#include<QMouseEvent>//启动窗口classSplashScreen:publicQWidget{Q_OBJECTpublic:explicitSplashScreen(intnLoadingType,QWidget*parent=nullptr);~SplashScreen();voidsetWidget(QWidget*mainWidget);QWidget*getWidget();voidinit();voidcloseWidget();voidsetLoadText(constQString&title);voidsetLoadCount(intcount);voidstart();protected:virtualvoidmousePressEvent(QMouseEvent*event)override;virtualvoidmouseMoveEvent(QMouseEvent*event)override;virtualvoidpaintEvent(QPaintEvent*event)override;signals:voidfinish();publicslots:voidcountTimeout();private:QGridLayout*m_pGridLayout;QLabel*m_pNumLabel;//倒计时计数标签QLabel*m_pTextLabel;//文字标签QWidget*m_pMainWidget;//保存主窗口//SplashScreen显示完毕后,就自动显示m_pMainWidgetQPoint m_MousePos;//保存鼠标位置QTimer*m_pLoadTimer;QTimer*m_pCountTimer;intm_nWidth;//窗口宽度intm_nHeight;//窗口高度intm_nAngle;//旋转角度intm_nCount;//倒计时描述intm_nLoadingType;//加载样式};};#endif// SPLASHSCREEN_H
#include"splashscreen.h"SplashScreen::SplashScreen(intnLoadingType,QWidget*parent)\:QWidget(parent),\m_pMainWidget(nullptr){m_nLoadingType=nLoadingType;//加载图形的类型范围为0-8if((m_nLoadingType<0)||(m_nLoadingType>8)){m_nLoadingType=0;}init();}SplashScreen::~SplashScreen(){deletem_pLoadTimer;deletem_pCountTimer;}voidSplashScreen::setWidget(QWidget*mainWidget){m_pMainWidget=mainWidget;}QWidget*SplashScreen::getWidget(){returnm_pMainWidget;}voidSplashScreen::setLoadText(constQString&title){if(!title.isEmpty()){m_pTextLabel->setText(title);}}voidSplashScreen::setLoadCount(intcount){if(m_nCount!=count){m_nCount=count;}m_pNumLabel->setText(QString::number(m_nCount));}voidSplashScreen::start(){// m_pCountTimer->start();m_pLoadTimer->start();show();}voidSplashScreen::init(){//setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);//setAttribute(Qt::WA_TranslucentBackground);resize(300,300);//setAttribute(Qt::WA_DeleteOnClose);m_pNumLabel=newQLabel(this);QSizePolicysizePolicy(QSizePolicy::Preferred,QSizePolicy::Expanding);sizePolicy.setHorizontalStretch(0);sizePolicy.setVerticalStretch(0);sizePolicy.setHeightForWidth(m_pNumLabel->sizePolicy().hasHeightForWidth());m_pNumLabel->setSizePolicy(sizePolicy);m_pNumLabel->setAlignment(Qt::AlignCenter);m_pNumLabel->setStyleSheet(QString::fromUtf8("color: rgb(55, 55, 55);\n""font: 75 50pt \"\346\245\267\344\275\223\";\n""background-color: transparent;"));m_pTextLabel=newQLabel(this);m_pTextLabel->setVisible(false);m_pTextLabel->setText(QString("Loading"));m_pTextLabel->setMinimumSize(0,40);m_pTextLabel->setMaximumHeight(40);m_pTextLabel->setAlignment(Qt::AlignHCenter|Qt::AlignTop);m_pTextLabel->setStyleSheet(QString::fromUtf8("color: rgb(55, 55, 55);\n""font: 75 14pt \"\346\245\267\344\275\223\";\n""background-color: transparent;"));m_pGridLayout=newQGridLayout(this);m_pGridLayout->setSpacing(0);m_pGridLayout->setContentsMargins(11,11,11,11);m_pGridLayout->setContentsMargins(70,70,70,70);m_pGridLayout->addWidget(m_pNumLabel,1,0,1,1);m_pGridLayout->addWidget(m_pTextLabel,2,0,1,1);setLayout(m_pGridLayout);setStyleSheet("QLabel{ color: rgb(55, 55, 55);""font: 75 50pt \"\346\245\267\344\275\223\";""background-color: transparent;}");m_nWidth=width();m_nHeight=height();m_pLoadTimer=newQTimer(this);connect(m_pLoadTimer,SIGNAL(timeout()),SLOT(update()));m_pLoadTimer->setInterval(5);m_pCountTimer=newQTimer(this);connect(m_pCountTimer,SIGNAL(timeout()),SLOT(countTimeout()));m_pCountTimer->setInterval(1000);m_nAngle=0;m_nCount=5;m_pNumLabel->setText(QString::number(m_nCount));}voidSplashScreen::mousePressEvent(QMouseEvent*event){m_MousePos=event->globalPos()-pos();}voidSplashScreen::mouseMoveEvent(QMouseEvent*event){move(event->globalPos()-m_MousePos);}voidSplashScreen::paintEvent(QPaintEvent*event){Q_UNUSED(event);QPainterpainter(this);painter.setRenderHint(QPainter::Antialiasing);QPixmap pixmap;QString strPath=":/Images/Loading/Loading"+QString::number(m_nLoadingType)+".png";pixmap.load(strPath);//平移到中间painter.translate(m_nWidth/2,m_nHeight/2);//旋转角度painter.rotate(m_nAngle);//图片的旋转轨迹是一个圆圈,必须把图片圆心移到这个轨迹圆,才能拼凑出画面painter.translate(-m_nWidth/2,-m_nHeight/2);//画图片//图片的宽高和窗口宽高是一样的painter.drawPixmap(0,0,m_nWidth,m_nHeight,pixmap);//角度每次转2度m_nAngle+=2;if(m_nAngle>=360)m_nAngle=0;}voidSplashScreen::countTimeout(){m_nCount--;m_pNumLabel->setText(QString::number(m_nCount));if(m_nCount<=0){emitfinish();if(m_pLoadTimer->isActive())m_pLoadTimer->stop();if(m_pCountTimer->isActive())m_pCountTimer->stop();close();if(m_pMainWidget)m_pMainWidget->show();}}
intnType=0;SplashScreen*pSplashScreen=newSplashScreen(nType,nullptr);pSplashScreen->setLoadCount(9);pSplashScreen->start();







http://www.jsqmd.com/news/1119076/

相关文章:

  • BK7259 Wi-Fi 6 SoC芯片解析与IPC应用开发实战
  • DevToysMac:macOS开发者必备的5个核心模块完整指南
  • AI Agent平台架构设计:从概念到企业级工程实践
  • TOC-XGBoost:龙卷风优化算法在时间序列预测中的应用
  • Ra<1nm超光滑镜面测量:2026推荐三维光学轮廓仪
  • 第3篇|Want 参数一传就丢:把跳转协议和接收边界写清楚
  • 前端转大模型:换个角度把学习路线落到项目证,把学习路线落到项目证据
  • 内蕴时空正则化(ISR)与曲率引擎工程:从递归自指宇宙学到星舰动力系统
  • 93.CODESYS/TIA 通用!模块化 ST 电机控制系统,含故障复位与时序优化
  • 计算机毕业设计Flink+Kafka在线教育可视化 教育培训机构招生与课程运营分析 大数据毕业设计(源码+LW+PPT+讲解)
  • Linux进程池开发:O_CLOEXEC防止文件描述符泄漏
  • 使用轮廓抠图和贝塞尔抠图实践
  • 值得研究的两个AI问题
  • 记录holdAction
  • 2026 年 8 款主流论文降重工具实测盘点:按需选择不踩坑
  • 基于MATLAB线性预测编码的多功能语音变声系统设计与实现
  • PHP应用安全实践:使用AES-256-GCM加密保护.env敏感配置
  • Python深度学习入门:从环境搭建到实战应用
  • 山东悬臂架短切喷涂机工作原理
  • 影刀RPA新手教程:读取文字完全指南——让影刀把网页上的文字读出来存到变量里
  • 发文章-送会员活动
  • 程序员就业:换个角度从岗位要求反推能力栈,把工具链跑成稳定流程
  • 2026年最新北京机器狗销售厂家 挑选避坑实用干货全整理
  • 如何在Windows电脑上制作macOS官方安装盘:完整免费教程
  • 利用AI智能体Codex与Skill机制,自动化拆解并生成抖音爆款带货视频
  • 西门子S7-1200 PLC脉冲控制伺服系统实战指南
  • Linux服务器Jmeter压测实战:环境搭建、脚本优化与性能分析
  • PCB设计核心技术解析与工程实践
  • 2026年湖南优选企业TOP10榜单:哪些行业新星将引领未来?
  • 简单的凯撒移位陷阱:别被最基础的密码算法欺骗