添加开机图片, based on Qt Quick
splashscreen.h
#include <QObject>
#include <QQuickView>
#include <QQmlApplicationEngine>
#include <QTimer>
#include <QUrl>
class SplashScreen : public QObject
{
Q_OBJECT
public:
SplashScreen(QObject *parent = 0) : QObject(parent){}
void start(){
startView = new QQuickView;
startView->setResizeMode(QQuickView::SizeRootObjectToView);
startView->setSource(QUrl(splashPath));
startView->setFlags(Qt::SplashScreen);
startView->show();
timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(timeUp()));
timer->start(delayTimeMs);
}
void setSplashPath(const QString& qmlPath){ splashPath = qmlPath; }
void setMainPath(const QString& path){ mainPath = QUrl(path); }
void setTime(const int& time){ delayTimeMs = time; }
signals:
void closeSplashScreen(QUrl);
private slots:
void timeUp(){
startView->hide();
timer->stop();
delete startView;
delete timer;
emit closeSplashScreen(mainPath);
}
private:
QQuickView *startView;
QTimer *timer;
QString splashPath;
QUrl mainPath;
int delayTimeMs;
};
main.cpp
#include "splashscreen.h"
int main()
{
...
QQmlApplicationEngine engine;
SplashScreen screen;
screen.setTime(2500);
screen.setSplashPath("qrc:/SplashScreen.qml");
screen.setMainPath("qrc:/main.qml");
screen.start();
QObject::connect(&screen, SIGNAL(closeSplashScreen(QUrl)), &engine, SLOT(load(QUrl)));
...
}