qt启动画面实现

简介: 在程序启动时常由于加载数据或加载库文件会一段时间才弹出主窗口,期间心急或不明所以的用户会以为 app有问题,“咋半天没反应呢”,这时添加启动画面及告诉用户数据在加载中,qt已经集成了该功能-QSplashScreen ,直接调用即可。

在程序启动时常由于加载数据或加载库文件会一段时间才弹出主窗口,期间心急或不明所以的用户会以为 app有问题,“咋半天没反应呢”。

这是我们就可以通过一个启动画面告知用户一些信息,请他们耐心等候。

QT已提供了QSplashScreen来处理启动画面,

1)QSplashScreen ( const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = 0 );//默认desktop为父窗体
2)QSplashScreen ( QWidget * parent, const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = 0 );//可指定父窗体

当然,一个app可以设置多个启动画面,例如在列表中用户操作加载大量数据时,用一个启动画面提示用户要比鼠标等候状态:

QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
QApplication::restoreOverrideCursor();

显示来得更有意思。

void    finish ( QWidget * mainWin );可以设置主窗口显示出来,并且 启动画面隐藏,当然程序员也可以按自己的喜欢自行调用close 直接关闭


示例代码:

//main.cpp

#include <QApplication>
#include <QSplashScreen>
#include <QDesktopWidget>
#include <QFont>
#include <QObject>
#include <QTimer>
#include <QMainWindow>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QSplashScreen splash(QPixmap(":/images/splash.jpg"));
    QFont _font("Courier New", 20);
    _font.setBold(true);
    splash.setFont(_font);
    splash.move ((QApplication::desktop()->width() - splash.width())/2
    ,(QApplication::desktop()->height() - splash.height())/2);
    splash.show();
    splash.showMessage(
        "SplashScreen test\n"
        "version 1.2.14\n"
        "xxx All rights reserved\n"
        "load data from db,please wait!\n"
        ,Qt::AlignHCenter);
    //
    app.processEvents();

    QMainWindow w;
    //设置延迟,防止一闪而过
    QTimer timer;
    QObject::connect(&timer,SIGNAL(timeout()),
        &w, SLOT(show()));
    QObject::connect(&timer,SIGNAL(timeout()),
        &splash, SLOT(close()));
    timer.start(1000);

    return app.exec();
}

//main.cpp

//.pro

TEMPLATE = app
DESTDIR = bin
CONFIG += qt debug_and_release static

CONFIG(debug, debug|release) {
    TARGET          = SplashScreend
    OBJECTS_DIR     = debug/obj
    MOC_DIR         = debug/moc
} else {
    TARGET          = SplashScreen
    OBJECTS_DIR     = release/obj
    MOC_DIR         = release/moc
}

SOURCES += main.cpp\

RESOURCES += ./SplashScreen.qrc

//.pro

//.qrc

<RCC version="1.0">
    <qresource prefix="/images">
        <file alias="splash.jpg">images/splash.jpg</file>
    </qresource>
</RCC>

//.qrc


目录
相关文章
|
3月前
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
382 4
|
3月前
|
UED
【Qt 学习笔记】Qt窗口 | 工具栏 | QToolBar的使用及说明
【Qt 学习笔记】Qt窗口 | 工具栏 | QToolBar的使用及说明
489 2
|
3月前
【qt】多窗口开发
【qt】多窗口开发
58 0
|
6月前
Mac系统下Qt程序图标设置方法
Mac系统下Qt程序图标设置方法
107 0
|
Python
pyqt 创建系统托盘
pyqt 创建系统托盘
99 0
|
C++ 计算机视觉 Python
C++ QT视频音乐播放器
C++ QT视频音乐播放器
171 0
C++ QT视频音乐播放器
QT圆形进度条(QT桌面项目光照强度检测)
QT圆形进度条(QT桌面项目光照强度检测)
108 0
|
JavaScript
Qt图片浏览器
可以显示jpg、jpeg、png、bmp。可以从电脑上拖动图到窗口并显示出来或者打开文件选择 重载实现dragEnterEvent(拖拽)、dropEvent(拖拽放下)、resizeEvent(窗口大小改变)
109 0
QT之Qml使用QSystemTrayIcon实现系统托盘
QT之Qml使用QSystemTrayIcon实现系统托盘
|
C++
Qt界面优化:Qt窗体控件设置
Qt界面优化:Qt窗体控件设置
438 1
Qt界面优化:Qt窗体控件设置