Qt App开机画面
需要头文件
#include <QSplashScreen>
#include <QElapsedTimer>
1.只显示文字的开机提示
QSplashScreen splash;
splash.showMessage("loading...");
splash.show();
QElapsedTimer t;
t.start();
while(t.elapsed()<500)
{
QCoreApplication::processEvents();
}
Ps:个人感觉不好看
2.只显示图片的开机提示
QPixmap pix(":/Images/Loading.png");
QSplashScreen splash(pix);
splash.setDisabled(true);
splash.show();
QElapsedTimer t;
t.start();
while(t.elapsed()<500){
QCoreApplication::processEvents();
}
3.图片和文字一起显示的开机提示
QPixmap pix(":/Images/Loading.png");
QSplashScreen splash(pix);
splash.setDisabled(true);
splash.show();
QElapsedTimer t;
t.start();
while(t.elapsed()<500){
QCoreApplication::processEvents();
}
在前三个的基础上做一些优化拓展
QPixmap pix(":/Images/Loading.png");
pix = pix.scaled(600,500, Qt::KeepAspectRatio, Qt::SmoothTransformation);
/*(600,500, Qt::KeepAspectRatio, Qt::SmoothTransformation);
600:当前屏幕的宽
500:当前屏幕的高
Qt::KeepAspectRatio:保持纵横比伸缩
Qt::SmoothTransformation:去锯齿状处理
*/
QSplashScreen splash(pix);
splash.showMessage("loading...", Qt::AlignLeft|Qt::AlignBottom, QColor(128,128,128));
/*showMessage()
* 第一个参数是内容
* 第二个参数是文字的对齐方式
* 第三个参数是颜色
*/
splash.setFont(QFont("Microsoft Yahei", 9));
splash.setDisabled(true);
splash.show();
QElapsedTimer t;
t.start();
while(t.elapsed()<3000){
QCoreApplication::processEvents();
}
效果可以自己去试试看
完整代码
#include "mainwindow.h"
#include <QApplication>
#include <QSplashScreen>
#include <QElapsedTimer>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPixmap pix(":/Images/Loading.png");
pix = pix.scaled(600,500, Qt::KeepAspectRatio, Qt::SmoothTransformation);
/*(600,500, Qt::KeepAspectRatio, Qt::SmoothTransformation);
600:当前屏幕的宽(可以是固定值,也可以是占屏幕的比例)
500:当前屏幕的高(可以是固定值,也可以是占屏幕的比例)
Qt::KeepAspectRatio:保持纵横比伸缩
Qt::SmoothTransformation:去锯齿状处理
*/
QSplashScreen splash(pix);
splash.showMessage("loading...", Qt::AlignLeft|Qt::AlignBottom, QColor(128,128,128));
/*showMessage()
* 第一个参数是内容
* 第二个参数是文字的对齐方式(可以是单独的居中或居左或居右等,
* 也可以组合的Qt::AlignLeft|Qt::AlignBottom左下角)
* 第三个参数是颜色(可以是red,blue,也可以是QColor形式的RGB色值)
*/
splash.setFont(QFont("Microsoft Yahei", 9));
splash.setDisabled(true);
splash.show();
QElapsedTimer t;
t.start();
while(t.elapsed()<3000){
QCoreApplication::processEvents();
}
return a.exec();
}