Qt启动画面

一、

1.自动检查是否正常,如果不正常退出。

二、

#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QSplashScreen>
#include <chrono>
#include <thread>
#include "widget/mainwidget.h"
#include "utility/globalvar.h"

#include "utility/configure.h"
#include "utility/mysqlhelper.h"

#include <QDebug>

bool startLoading();
QSplashScreen *splash;
Configure *cfg;
int main(int argc, char *argv[])
{

    QApplication a(argc, argv);

    cfg=Configure::getInstance();
    cfg->init();

    QFile qss_file(":/style/default.qss");
    if(!qss_file.open(QFile::ReadOnly))
    {
        qDebug()<<"qss file open error";
    }
    qApp->setStyleSheet(qss_file.readAll());
    qss_file.close();

//    MainWindow w;
//    w.show();
   // LoginDialog loginDlg;
    //if(loginDlg.exec()==QDialog::Accepted)
//    {

        bool ret=startLoading();

        MainWidget mw;
        if(ret)
        {
            mw.showMaximized();
            //mw.show();
            splash->finish(&mw);
            return a.exec();
        }
        else
        {
            delete splash;
            splash=nullptr;
            return 0;
        }

//    }

}

bool startLoading()
{
    QPixmap pixmap(":/image/start");
    QPixmap scaledPixmap = pixmap.scaled(QSize(500,400), Qt::KeepAspectRatio);
    splash=new QSplashScreen(scaledPixmap);
    splash->setFont(QFont("microsoft yahei", 20, QFont::Thin));
    splash->show();
    MySQLHelper *mySqlHelper=MySQLHelper::getInstance();
    bool ret=mySqlHelper->connectDB(cfg->getKeyValue(Configure::MYSQL_SERVER),
                                    cfg->getKeyValue(Configure::MYSQL_DATABASE),
                                    cfg->getKeyValue(Configure::MYSQL_USER_NAME),
                                    cfg->getKeyValue(Configure::MYSQL_PASSWORD)
                                    );

    if(ret)
    {
        splash->showMessage("mysql database connect ok",
                   Qt::AlignRight|Qt::AlignCenter, Qt::green);
    }
    else
    {
        splash->showMessage("mysql database connect error",
                   Qt::AlignRight|Qt::AlignCenter, Qt::red);
    }
    std::this_thread::sleep_for(std::chrono::milliseconds(2000));


    return ret;
}
原文地址:https://www.cnblogs.com/ike_li/p/14266973.html