Qt利用QSplashScreen类自定义初始化启动界面
来源:互联网 发布:改良圈算法 编辑:程序博客网 时间:2024/06/05 00:55
前段时间在做Qt项目的时候需要做一个程序启动画面,于是自己定义了一个类来实现自定义启动界面。写得不好的地方,望大家指出!
头文件:SplashScreenMng.h
#ifndef SPLASHSCREENMNG_H#define SPLASHSCREENMNG_Hclass QMutex;class QSplashScreen;class QString;class CSplashScreenMng{public:/** * 函数功能:获取CSplashScreenMng的唯一对象指针 * 返回值:CSplashScreenMng对象指针 */static CSplashScreenMng* getInstance();/** * 函数功能:获取QSplashScreen指针对象并显示 * 参数:fileName [in] QSplashScreen显示的图片文件 * 返回值:QSplashScreen对象指针 */QSplashScreen* showSplash(const QString &fileName);/** * 函数功能:设置QSplashScreen对象的内容 *参数: text [in] 需要显示的内容 */void setSplashStatus(const QString &text);//销毁QSplashScreen对象void destroySplash();private:CSplashScreenMng(); //构造函数~CSplashScreenMng(); //析构函数CSplashScreenMng(const CSplashScreenMng &other); //拷贝构造CSplashScreenMng& operator=(const CSplashScreenMng &other); //赋值运算操作符private:QSplashScreen*m_pSplash; static QMutex mutex;static CSplashScreenMng* m_pSplashScreenMng; // CSplashScreenMng 全局唯一的变量};#endif //SPLASHSCREENMNG_H
</pre><pre>源文件:SplashScreenMng.cpp
</pre><pre>
#include "SplashScreenMng.h"#include <QMutex>#include <QObject>#include <QPixmap>#include <QSplashScreen>#include <QString>QMutex CSplashScreenMng::mutex;CSplashScreenMng* CSplashScreenMng::m_pSplashScreenMng = NULL;CSplashScreenMng::CSplashScreenMng(){ m_pSplash = NULL;}CSplashScreenMng::~CSplashScreenMng(){}CSplashScreenMng* CSplashScreenMng::getInstance(){if(NULL == m_pSplashScreenMng){ mutex.lock();if(NULL == m_pSplashScreenMng){m_pSplashScreenMng = new CSplashScreenMng();}mutex.unlock();}return m_pSplashScreenMng;}QSplashScreen*CSplashScreenMng::showSplash(const QString &fileName){QPixmap pixmap(fileName);if(pixmap.isNull())return NULL;m_pSplash = new QSplashScreen(pixmap);m_pSplash->show();setSplashStatus(QObject::tr("初始化..."));return m_pSplash;}void CSplashScreenMng::setSplashStatus(const QString &text){if(!m_pSplash)return ;QString splashText = text;splashText += QObject::tr("请稍后...");m_pSplash->showMessage(splashText, Qt::AlignLeft | Qt::AlignBottom, Qt::white);//这里设置为左下角显示信息}void CSplashScreenMng::destroySplash(){if(m_pSplash){delete m_pSplash;m_pSplash = NULL;}}
具体使用:
1 获取QSplashScreen 指针
QSplashScreen* splash = CSplashScreenMng::getInstance()->showSplash("start.bmp");//此处需要传递资源文件
2 当获取指针成功后 可以通过调用
CSplashScreenMng::getInstance()->setSplashStatus(str); //传递需要显示的内容
3 在初始化完成后使用splash ->finish()并且调用
CSplashScreenMng::getInstance()->destroySplash()函数释放内存即可
1 0
- Qt利用QSplashScreen类自定义初始化启动界面
- QSplashScreen 制作初始化界面
- Qt学习——程序启动画面QSplashScreen类
- Qt学习——程序启动画面QSplashScreen类 .
- Qt里使用QSplashScreen类制作Splash启动窗口
- 在Qt里使用QSplashScreen类制作Splash启动窗口
- Qt 程序启动画面QSplashScreen的使用
- 程序启动画面QSplashScreen类
- 程序启动画面QSplashScreen类
- QT QSplashScreen
- Qt学习笔记(4) 启动画面 QSplashScreen
- Qt学习16——程序启动画面QSplashScreen
- Qt QSplashScreen开始动画
- QSplashScreen设置启动画面
- 程序启动画面 QSplashScreen
- QSplashScreen
- QSplashScreen
- qt做启动界面
- scala console 用:paste 多行输入 以及load加载本地文件
- Android常使用倒计时
- openwrt MT7620的无线MAC地址修改
- NSQ的HTTP API
- 关于Eclipse Java EE中默认的配置Tomcat,启动后访问http://locaohost:8080/,出现404错
- Qt利用QSplashScreen类自定义初始化启动界面
- CentOS+Nginx一步一步开始配置负载均衡
- PHP : mysqli【面向对象】操作数据库【连接、增、删、改、查】
- 如何使用Java List等集合类的removeAll方法
- Ajax, 选择GET还是POST?(转)
- 用于音频对讲: 解g711u数据流和压缩pcm的数据流的方法
- Java实现二分查找--非递归
- Hough变换检测圆
- iOS中的initialize与load两个类方法简单理解