QSplashScreen Class
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 |
详细说明
启动画面是一种通常在应用程序启动时显示的小部件。启动画面常用于启动时间较长的应用程序(例如需要时间建立连接的数据库或网络应用程序),以向用户反馈应用程序正在加载。
启动画面会显示在屏幕中央。若希望将其始终置于桌面其他窗口之上,可将Qt::WindowStaysOnTopHint 添加到启动画面控件的窗口标志中。
某些 X11 窗口管理器不支持“始终置顶”标志。一种解决方法是设置一个定时器,定期在启动画面上调用raise() 来模拟“始终置顶”的效果。
最常见的用法是在主控件显示在屏幕上之前先显示启动画面。下面的代码片段演示了这一点:在应用程序的主窗口显示之前,先显示启动画面并执行一些初始化任务:
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 。
通常无需设置控件标志(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)
使用 painterpainter 绘制启动画面的内容。默认实现会绘制由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 表示新消息;若消息已被移除,则该参数为空字符串。
另请参阅 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()。它与标准的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()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.