QT程序启动画面问题
程序启动时比较枯燥,同时为了增加程序趣味,考虑做一个启动画面。
在Qt中实现启动界面,主要就是使用QSplashScreen类。关于QSplashScreen类的使用问题,主要参考
http://blog.csdn.net/chenlong12580/article/details/23713025
http://blog.csdn.net/andy_93/article/details/52700697
然而此博客仅仅介绍了如何封装QSplashScreen类,并为介绍怎么使用,而我仅仅是一个QT新手,在使用过程中遇到一些问题,特此记录
首先是头文件SplashScreenMng.h的封装,实现如下
1 #ifndef SPLASHSCREENMNG_H 2 #define SPLASHSCREENMNG_H 3 4 class QMutex; 5 class QSplashScreen; 6 class QString; 7 8 class CSplashScreenMng 9 { 10 public: 11 /** 12 * 函数功能:获取CSplashScreenMng的唯一对象指针 13 * 返回值: CSplashScreenMng对象指针 14 */ 15 static CSplashScreenMng* getInstance(); 16 17 /** 18 * 函数功能:获取QSplashScreen指针对象并显示 19 * 参数: fileName [in] QSplashScreen显示的图片文件 20 * 返回值:QSplashScreen对象指针 21 */ 22 QSplashScreen* showSplash(const QString &fileName); 23 24 /** 25 * 函数功能:设置QSplashScreen对象的内容 26 * 参数: text [in] 需要显示的内容 27 */ 28 void setSplashStatus(const QString &text); 29 30 //销毁QSplashScreen对象 31 void destroySplash(); 32 private: 33 CSplashScreenMng(); //构造函数 34 ~CSplashScreenMng(); //析构函数 35 CSplashScreenMng(const CSplashScreenMng &other); //拷贝构造 36 CSplashScreenMng& operator=(const CSplashScreenMng &other); //赋值运算操作符 37 38 private: 39 QSplashScreen* m_pSplash; 40 static QMutex mutex; 41 static CSplashScreenMng* m_pSplashScreenMng; // CSplashScreenMng 全局唯一的变量 42 }; 43 44 #endif //SPLASHSCREENMNG_H
其次是关于实现文件SplashScreenMng.cpp
1 #include "SplashScreenMng.h" 2 #include <QMutex> 3 #include <QObject> 4 #include <QPixmap> 5 #include <QSplashScreen> 6 #include <QString> 7 8 QMutex CSplashScreenMng::mutex; 9 CSplashScreenMng* CSplashScreenMng::m_pSplashScreenMng = NULL; 10 11 CSplashScreenMng::CSplashScreenMng() 12 { 13 m_pSplash = NULL; 14 } 15 16 CSplashScreenMng::~CSplashScreenMng() 17 { 18 19 } 20 21 CSplashScreenMng* CSplashScreenMng::getInstance() 22 { 23 if(NULL == m_pSplashScreenMng){ 24 mutex.lock(); 25 if(NULL == m_pSplashScreenMng){ 26 m_pSplashScreenMng = new CSplashScreenMng(); 27 } 28 mutex.unlock(); 29 } 30 return m_pSplashScreenMng; 31 } 32 33 QSplashScreen* CSplashScreenMng::showSplash(const QString &fileName) 34 { 35 QPixmap pixmap(fileName); 36 if(pixmap.isNull()) 37 return NULL; 38 39 m_pSplash = new QSplashScreen(pixmap); 40 m_pSplash->show(); 41 setSplashStatus(QObject::tr("初始化...")); 42 43 return m_pSplash; 44 } 45 46 void CSplashScreenMng::setSplashStatus(const QString &text) 47 { 48 if(!m_pSplash) 49 return ; 50 51 QString splashText = text; 52 splashText += QObject::tr("请稍后..."); 53 m_pSplash->showMessage(splashText, Qt::AlignLeft | Qt::AlignBottom, Qt::white);//这里设置为左下角显示信息 54 } 55 56 void CSplashScreenMng::destroySplash() 57 { 58 if(m_pSplash){ 59 delete m_pSplash; 60 m_pSplash = NULL; 61 } 62 }
文件封装结束需要调用,在调用过程中,资源文件的配置上图片格式无强制要求。但是在使用中仅仅放到工程目录Resources下程序仍然无法识别。后来尝试发现,是没有放入资源文件中。QT的资源文件是*.qrc,但是资源文件在VS2013环境下无法直接打开。这时可以通过打开Form Files下的*.ui,然后在QtDesigner下编辑*.qrc,增加图片文件,然后调用即可。
调用时的代码如下
1 #include <windowsx.h> 2 #include<QSplashScreen> 3 #include<QtTest/qtest.h> 4 int main(int argc, char *argv[]) 5 { 6 QApplication a(argc, argv); 7 8 QSplashScreen* splash =CSplashScreenMng::getInstance()->showSplash(":/TunnelView/Resources/Initialize3.jpg"); 9 //CSplashStart::getInstance()->setSplashStatus("Welcome"); 10 QTest::qSleep(1000);//延时 11 a.processEvents();12 TunnelView w;13 w.show();14 splash->finish(&w);15 CSplashScreenMng::getInstance()->DestroySplash();16 return a.exec();17 }
在选择图片目录时图片目录要包含至工程Resources上一层目录,否则图片无法加载。此时采用在QtDesigner中的资源管理中复制目录最方便,避免出错。
转载于:https://www.cnblogs.com/lvyalei/p/8179075.html
QT程序启动画面问题相关推荐
- Qt程序启动画面QSplashScreen类
Qt程序启动画面QSplashScreen类 当程序初始化工作比较多,程序可能启动较长时间后,窗口才会显示出来,用户没准会抱怨程序响应的慢.为了改善用户体验,最好在程序初始化这段时间显示logo,或者 ...
- Qt程序启动画面播放(gif与swf两种动画格式)
学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...
- QT程序启动画面gif动画有静止背景的解决方法
最近在做QT的程序启动画面的动画,用的是gif的动图.但是有个问题,就是总有一帧在背景那是静止的,也就是说动图叠上静止图上.如下图所示的齿轮所示. 左边的齿轮背后有个静止的齿轮,一直会在那,右边这个才 ...
- 进阶~Qt程序启动画面
今天又把教程视频看了一遍,这次学的是程序启动画面设置方法,以下是源码: #include"mainwindow.h" #include #include"QPixmap& ...
- 进阶~Qt程序启动画面_vortex_新浪博客
今天又把教程视频看了一遍,这次学的是程序启动画面设置方法,以下是源码: #include"mainwindow.h" #include #include"QPixmap& ...
- Qt程序启动画面QSplashScreen
QSplashScreen会在应用程序的主窗口出现之前显示一个图片! #include "qmain.h" #include <QtGui/QApplication> ...
- QT5.9学习笔记之——程序启动画面
多数大型应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失.程序启动画面可以显示相关产品的一些信息,使用户在等待程序启动的同了解相关产品的功能,这也是一个宣传的方式.Qt中提供的 ...
- VC四种程序启动画面的制作方法
使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应 ...
- 嵌入式Qt程序启动参数-qws 不需要X11桌面系统
1 背景 通过串口终端启动arm开发板(linux系统)的Qt应用程序,提示: [cpp] view plain copy [root@FORLINX6410]# /opt/qt-4.7.1/dem ...
最新文章
- Mule与Servicemix比较
- upc组队赛15 Supreme Number【打表】
- PDM 导出Excel
- 关于负载均衡的几个问题
- python 面试题(3)--- 进制转换
- Android热修复Java类_Android 热修复(一)
- python2中可以使用print()函数吗_Python3中的 print 函数有哪些用法?
- AWS ec2 安装手记
- 格拉布斯(Grubbs)准则法
- HTML制作简单课程表
- 湖北商贸学院计算机二级领取,湖北商贸学院教务管理系统入口http://jw.hbc.edu.cn/...
- Q版京剧脸谱来喽——花旦
- ITEXT处理pdf详解
- 企业从哪里开始构建弹性 IT 基础架构
- 迅为6818开发板资料-CAN总线和RFID驱动的配置方法
- 潘通色卡tcx电子版_潘通色卡电子版Pantone TPX(三)
- 建设工程项目质量成本优化与控制
- 七年IT生涯的经验教训
- Unity3D摄像机裁剪——NGUI篇
- mysql导入sql文件、数据库时报错ERROR: ASCII '\0' appeared in the statement
热门文章
- ibatis This SQL map does not contain a MappedStatement
- 树莓派4b自带wifi_树莓派4B日志二:WiFi远程配置与换源
- 没有workstation_这才是Win10的旗舰版:WorkStation版独享功能测试
- computed用发_Vue中的computed属性和nextTick方法
- SQL2008附加数据库只读怎么修改
- php类的实例化方法,php中类的定义和实例化方法
- android elf 加固_APK一键自动化加固脚本
- css下拉点击不动,CSS3 - 进行简单的点击下拉[关闭](CSS3 - Making a simple click-dropdown [closed])...
- 中专计算机网络技术试卷,2018年中职对口升学计算机网络技术模拟试题
- vimpython配色_超漂亮 vim 配置:space-vim