QSplashScreen 类

QSplashScreen 小部件提供可以展示的闪屏,在应用程序启动期间。 更多...

头: #include <QSplashScreen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承: QWidget

公共函数

QSplashScreen (const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
QSplashScreen (QScreen * screen , const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())
virtual ~QSplashScreen ()
void finish (QWidget * mainWin )
QString message () const
const QPixmap pixmap () const
void repaint ()
void setPixmap (const QPixmap & pixmap )

公共槽

void clearMessage ()
void showMessage (const QString & message , int alignment = Qt::AlignLeft, const QColor & color = Qt::black)

信号

void messageChanged (const QString & message )

保护函数

virtual void drawContents (QPainter * painter )

重实现保护函数

virtual bool event (QEvent * e ) override
virtual void mousePressEvent (QMouseEvent *) override

详细描述

闪屏是应用程序启动时,通常显示的 Widget。闪屏常用于长启动时间的应用程序 (如:数据库或花时间建立连接的网络应用程序),为用户提供应用程序加载反馈。

闪屏出现在屏幕中心。它可能很有用,添加 Qt::WindowStaysOnTopHint 到闪屏 Widget 的窗口标志,若想要把它保持在桌面所有其它窗口之上。

一些 X11 窗口管理器不支持 "停留在顶部" 标志。解决方案是设置计时器周期性调用 raise () 在闪屏以模拟 "停留在顶部" 效果。

最常见用法是展示闪屏,在屏幕中显示主 Widget 前。以下代码片段将阐明这,显示闪屏并履行一些初始化任务,在展示应用程序主窗口前:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap(":/splash.png");
    QSplashScreen splash(pixmap);
    splash.show();
    app.processEvents();
    ...
    QMainWindow window;
    window.show();
    splash.finish(&window);
    return app.exec();
}
					

用户可以隐藏闪屏,通过采用鼠标点击它。为使鼠标处理能工作,调用 QApplication::processEvents () 周期性在启动期间。

有时很有用采用消息更新闪屏,例如,在应用程序启动时宣布建立连接 (或加载模块):

QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSplashScreen(pixmap);
splash->show();
... // Loading some items
splash->showMessage("Loaded modules");
QCoreApplication::processEvents();
... // Establishing connections
splash->showMessage("Established connections");
QCoreApplication::processEvents();
					

QSplashScreen 支持这,采用 showMessage () 函数。若希望自己绘制,可以获取用于闪屏的像素图指针采用 pixmap ()。另外,可以子类 QSplashScreen 并重实现 drawContents ().

若拥有多个屏幕,在不同屏幕而不是首要屏幕,展示闪屏是可能的。例如:

QScreen *screen = QGuiApplication::screens().at(1);
QPixmap pixmap(":/splash.png");
QSplashScreen splash(screen, pixmap);
splash.show();
					

成员函数文档编制

[explicit] QSplashScreen:: QSplashScreen (const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

构造闪屏显示 pixmap .

应该不需要设置 Widget 标志 f ,或许除了 Qt::WindowStaysOnTopHint .

QSplashScreen:: QSplashScreen ( QScreen * screen , const QPixmap & pixmap = QPixmap(), Qt::WindowFlags f = Qt::WindowFlags())

这是重载函数。

此函数允许为闪屏指定屏幕。此构造函数的典型用法是若拥有多个屏幕,且首选让闪屏在不同屏幕而不是首要屏幕。在此情况下,传递适当 screen .

[virtual noexcept] QSplashScreen:: ~QSplashScreen ()

析构函数。

[slot] void QSplashScreen:: clearMessage ()

移除在闪屏上显示的消息

另请参阅 showMessage ().

[virtual protected] void QSplashScreen:: drawContents ( QPainter * painter )

绘制闪屏的内容,使用描绘器 painter 。默认实现绘制传递的消息,通过 showMessage ()。重实现此函数,若想在闪屏做自己的绘图。

[override virtual protected] bool QSplashScreen:: event ( QEvent * e )

重实现: QWidget::event (QEvent *event).

void QSplashScreen:: finish ( QWidget * mainWin )

使闪屏等待,直到小部件 mainWin 显示先于调用 close () 在自身。

QString QSplashScreen:: message () const

返回闪屏中目前显示的消息。

另请参阅 showMessage () 和 clearMessage ().

[signal] void QSplashScreen:: messageChanged (const QString & message )

此信号发射,当闪屏中的消息改变时。 message 为新消息,和为 null 字符串当消息已移除时。

另请参阅 showMessage () 和 clearMessage ().

[override virtual protected] void QSplashScreen:: mousePressEvent ( QMouseEvent *)

重实现: QWidget::mousePressEvent (QMouseEvent *event).

const QPixmap QSplashScreen:: pixmap () const

返回闪屏中使用的像素图。图像不拥有任何绘制文本通过 showMessage () 调用。

另请参阅 setPixmap ().

void QSplashScreen:: repaint ()

这覆写 QWidget::repaint ()。它不同于标准重新描绘函数,因为它还调用 QCoreApplication::processEvents () 以确保显示更新,即使不存在事件循环。

void QSplashScreen:: setPixmap (const QPixmap & pixmap )

把用作闪屏图像的像素图设为 pixmap .

另请参阅 pixmap ().

[slot] void QSplashScreen:: showMessage (const QString & message , int alignment = Qt::AlignLeft, const QColor & color = Qt::black)

绘制 message 文本在闪屏中采用颜色 color 并对齐文本根据标志 alignment 。此函数调用 repaint () 以确保立即重新描绘闪屏。因此,消息随应用程序在做的保持更新 (如:加载文件)。

另请参阅 Qt::Alignment , clearMessage (),和 message ().