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

【QT】实现应用程序启动画面

方案一:使用QSplashScreen实现

QSplashScreen小部件提供可一个启动画面,在应用程序启动期间显示。

使用注意事项

使用QSplashScreen类需要添加头文件#include<QSplashScreen

编译配置要求:

  • CMake需添加:find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
  • qmake需添加:QT += widgets

注:该类继承自QWidget

详细说明

当应用程序启动时间较长时(如需要建立数据库连接或网络连接的场景),可通过QSplashScreen向用户展示加载状态。

QSplashScreen默认居中显示启动画面。如需保持画面置顶,可设置Qt::WindowsStaysOnTopHint标志。若该标志不被支持,可通过设置定时器调用raise()方法模拟置顶效果。

QSplashScreen最常见的用法是在屏幕上显示主窗体之前显示启动画面。

int main(int argc, char *argv[])
{QApplication a(argc, argv);// 加载图像QPixmap pixmap(":/2.png");// 创建QSplashScreen对象QSplashScreen splash(pixmap, Qt::WindowStaysOnTopHint);// 显示splashsplash.show();// 鼠标单击会隐藏启动画面,如果要使鼠标处理正常工作,在启动期间调用QApplication::processEvents()a.processEvents();MainWindow w;w.show();// 应用程序初始化完成,结束初始屏幕splash.finish(&w);return a.exec();
}

另外使用消息更新启动画面也很有用,比如在程序启动时宣布已建立连接或加载模块:

int main(int argc, char *argv[])
{QApplication a(argc, argv);QPixmap pixmap(":/2.png");QSplashScreen *splash = new QSplashScreen(pixmap, Qt::WindowStaysOnTopHint);splash->show();// 加载某些项splash->showMessage("loaded some items");QApplication::processEvents();// 建立连接splash->showMessage("Established connections");;QApplication::processEvents();QMainWindow w;w.show();// 应用程序初始化完成,结束初始屏幕splash->finish(&w);return a.exec();
}

如果有多个屏幕,也可以在与主屏幕不同的屏幕上显示启动画面:

// 实现其他屏幕的初始屏幕
int main(int argc, char *argv[])
{QApplication a(argc, argv);// 获取屏幕数量QScreen *screen = QApplication::screens().at(1);QPixmap pixmap(":/2.png");QSplashScreen splash(pixmap, Qt::WindowStaysOnTopHint);splash.show();a.processEvents();QMainWindow w;w.show();splash.finish(&w);return a.exec();
}

常用方法

QSplashScreen类提供5个公共方法:

  • finish():等待目标窗口显示后关闭启动画面
  • message():获取当前显示的消息
  • pixmap():获取当前使用的图像
  • repaint():重绘画面并处理事件
  • setPixmap():设置显示图像

提供1个protected方法:

  • drawContents():绘制画面内容

提供2个槽函数:

  • clearMessage():清除显示消息
  • showMessage():显示指定文本

提供1个信号:

  • messageChanged():消息变化时触发

继承自该类的子类需要重新实现event()mousePressEvent()


文章转载自:
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://.
http://www.dtcms.com/a/281608.html

相关文章:

  • 笔试——Day9
  • linux kernel的错误编码指针详细介绍
  • 【深度学习新浪潮】什么是任意倍率超分?
  • 知识库信息切片,AI降本增效的利刃
  • Unity灯光面板环境设置
  • [Python] -实用技巧6-Python中with语句和上下文管理器解析
  • 身份核验自动化-姓名身份证号二要素核验接口-API实名验证
  • 计算机系统方向可发会议/期刊参考时间
  • CF1916D Mathematical Problem 题解
  • 数据结构——顺序表的相关操作
  • TypeScript之旅
  • 读取ubuntu的磁盘分区表与超级块
  • 万字长文深度解析:AI搜索范式背后的四大核心模块
  • Typescript 泛型
  • 智慧跳绳全方案:三模无线+姿态感知,低功耗高精度芯片选型指南OM6626/SI24R2E
  • 【flex布局】
  • Python实现按数字命名合并文本文件
  • 推客小程序开发全景指南:从商业模式到用户体验的完整方法论
  • 前端开发数据缓存方案详解
  • Spring Boot全局异常处理:打造坚如磐石的应用防线
  • C++ - 仿 RabbitMQ 实现消息队列--muduo快速上手
  • 【每日刷题】螺旋矩阵
  • 【Python】定时器快速实现
  • 并发编程-volatile
  • Python学习之路(十二)-开发和优化处理大数据量接口
  • git基础命令
  • Redis学习系列之——Redis Stack 拓展功能
  • 为什么市场上电池供电的LoRa DTU比较少?
  • redisson tryLock
  • React源码5 三大核心模块之一:render,renderRoot