以前打红警的时候进入游戏界面会有一个启动界面,比如美国是有伞兵,英国有狙击手,韩国有黑鹰战机的一些介绍,这些就是启动界面,就是由QSplashScreen这个类来实现的。
QSplashScreen 是 Qt 框架中的一个类,用于在应用程序启动时显示一个启动画面。这个启动画面通常用于展示应用程序的图标、名称或者加载进度,同时可以给用户一个视觉反馈,表明程序正在初始化。 QSplashScreen 提供了一些基本的功能,例如显示图像、动画和文本信息。它也可以设置显示时间,以及在应用程序的主窗口显示之前自动隐藏。
#ifndef STARTINTERFACE_H
#define STARTINTERFACE_H#include <QSplashScreen>
#include <QProgressBar>
#include <QPixmap>
#include <QMouseEvent>
#include <thread>class StartInterface : public QSplashScreen
{Q_OBJECT
public:StartInterface(const QPixmap &pixmap);~StartInterface();void SetProgress (int value);void ShowStarted (void);
private:QProgressBar *ProgressBar=nullptr;
private slots:void progressChanged (int);
};#endif // STARTINTERFACE_H
cpp
#include "startinterface.h"StartInterface::StartInterface(const QPixmap &pixmap):QSplashScreen(pixmap)
{ProgressBar = new QProgressBar (this);ProgressBar->setGeometry(0, pixmap.height() - 50, pixmap.width(), 30);ProgressBar->setRange (0, 100);ProgressBar->setValue (0);connect(ProgressBar, SIGNAL(valueChanged(int)), this, SLOT(progressChanged(int)));QFont font;font.setPointSize ( 16 );ProgressBar->setFont (font);ProgressBar->setStyleSheet("QProgressBar{ \font:9pt; \border-radius:5px; \text-align:center; \border:1px solid #E8EDF2; \background-color: rgb(255, 255, 255); \border-color: rgb(180, 180, 180); \} \QProgressBar:chunk{ \border-radius:5px; \background-color:#1ABC9C; \}");
}StartInterface::~StartInterface()
{}void StartInterface::SetProgress(int value)
{ProgressBar->setValue(value);
}void StartInterface::ShowStarted()
{show();//暂停当前线程for (int i = 0; i <= 100; ++i) {std::this_thread::sleep_for(std::chrono::milliseconds(10));SetProgress(i);}}void StartInterface::progressChanged(int)
{repaint();
}
cpp
#include "widget.h"
#include <QApplication>
#include "startinterface.h"
int main(int argc, char *argv[])
{QApplication a(argc, argv);StartInterface *splash = new StartInterface(QPixmap("E:/1.png"));splash->ShowStarted();a.processEvents();Widget w;w.show();return a.exec();
}
效果: