Auf dieser Seite

QSplashScreen Class

Das QSplashScreen-Widget stellt einen Begrüßungsbildschirm bereit, der beim Start der Anwendung angezeigt werden kann. Mehr...

Überschrift: #include <QSplashScreen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QWidget

Öffentliche Funktionen

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)

Öffentliche Slots

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

Signale

void messageChanged(const QString &message)

Geschützte Funktionen

virtual void drawContents(QPainter *painter)

Neu implementierte geschützte Funktionen

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

Ausführliche Beschreibung

Ein Splash-Screen ist ein Widget, das normalerweise beim Start einer Anwendung angezeigt wird. Splash-Screens werden häufig bei Anwendungen mit langen Startzeiten verwendet (z. B. Datenbank- oder Netzwerkanwendungen, bei denen der Aufbau von Verbindungen Zeit in Anspruch nimmt), um dem Benutzer eine Rückmeldung darüber zu geben, dass die Anwendung geladen wird.

Der Splash-Screen erscheint in der Mitte des Bildschirms. Es kann sinnvoll sein, das Flag „ Qt::WindowStaysOnTopHint “ zu den Fensterflags des Splash-Widgets hinzuzufügen, wenn Sie möchten, dass es über allen anderen Fenstern auf dem Desktop angezeigt wird.

Einige X11-Fenstermanager unterstützen das Flag „stays on top“ nicht. Eine Lösung besteht darin, einen Timer einzurichten, der in regelmäßigen Abständen ` raise()` für den Splash-Screen aufruft, um den „stays on top“-Effekt zu simulieren.

Am häufigsten wird ein Splash-Screen angezeigt, bevor das Haupt-Widget auf dem Bildschirm erscheint. Dies wird im folgenden Codeausschnitt veranschaulicht, in dem ein Splash-Screen angezeigt und einige Initialisierungsaufgaben ausgeführt werden, bevor das Hauptfenster der Anwendung erscheint:

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();
}

Der Benutzer kann den Startbildschirm ausblenden, indem er mit der Maus darauf klickt. Damit die Maussteuerung funktioniert, rufen Sie während des Startvorgangs regelmäßig ` QApplication::processEvents()` auf.

Manchmal ist es sinnvoll, den Begrüßungsbildschirm mit Meldungen zu aktualisieren, um beispielsweise beim Start der Anwendung den Aufbau von Verbindungen oder das Laden von Modulen anzukündigen:

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 unterstützt dies mit der Funktion ` showMessage()`. Wenn Sie eigene Zeichnungen erstellen möchten, können Sie mit ` pixmap()` einen Zeiger auf die im Begrüßungsbild verwendete Pixmap abrufen. Alternativ können Sie eine Unterklasse von `QSplashScreen` erstellen und ` drawContents()` neu implementieren.

Bei mehreren Bildschirmen ist es auch möglich, den Splash-Screen auf einem anderen Bildschirm als dem primären anzuzeigen. Zum Beispiel:

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

Dokumentation der Member-Funktionen

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

Erstellen Sie einen Begrüßungsbildschirm, auf dem die Meldung „ pixmap “ angezeigt wird.

Es sollte nicht notwendig sein, die Widget-Flags „ f “ zu setzen, außer vielleicht „ Qt::WindowStaysOnTopHint “.

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

Mit dieser Funktion können Sie den Bildschirm für Ihren Begrüßungsbildschirm festlegen. Dieser Konstruktor wird in der Regel verwendet, wenn Sie über mehrere Bildschirme verfügen und den Begrüßungsbildschirm lieber auf einem anderen Bildschirm als Ihrem Hauptbildschirm anzeigen möchten. Übergeben Sie in diesem Fall den entsprechenden ` screen`.

Dies ist eine überladene Funktion.

[virtual noexcept] QSplashScreen::~QSplashScreen()

Destruktor.

[slot] void QSplashScreen::clearMessage()

Entfernt die auf dem Begrüßungsbildschirm angezeigte Meldung

Siehe auch showMessage().

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

Zeichnen Sie den Inhalt des Begrüßungsbildschirms mit dem Malprogramm painter. Die Standardimplementierung zeichnet die von showMessage() übergebene Meldung. Implementieren Sie diese Funktion neu, wenn Sie eigene Zeichnungen auf dem Begrüßungsbildschirm anbringen möchten.

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

Umsetzt: ` QWidget::event(QEvent *event)`.

void QSplashScreen::finish(QWidget *mainWin)

Sorgt dafür, dass der Begrüßungsbildschirm wartet, bis das Widget mainWin angezeigt wird, bevor er die Methode close() auf sich selbst aufruft.

QString QSplashScreen::message() const

Gibt die Meldung zurück, die derzeit auf dem Begrüßungsbildschirm angezeigt wird.

Siehe auch showMessage() und clearMessage().

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

Dieses Signal wird ausgelöst, wenn sich die Meldung auf dem Begrüßungsbildschirm ändert. ` message ` ist die neue Meldung und ist eine leere Zeichenkette, wenn die Meldung entfernt wurde.

Siehe auch „ showMessage()“ und „ clearMessage()“.

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

Implementiert: ` QWidget::mousePressEvent(QMouseEvent *event)`.

const QPixmap QSplashScreen::pixmap() const

Gibt die Pixmap zurück, die im Begrüßungsbild verwendet wird. Das Bild enthält keinen der Texte, die durch Aufrufe von ` showMessage()` gezeichnet wurden.

Siehe auch ` setPixmap()`.

void QSplashScreen::repaint()

Dies überschreibt die Funktion ` QWidget::repaint()`. Sie unterscheidet sich von der Standard-Repaint-Funktion dadurch, dass sie zusätzlich die Funktion ` QCoreApplication::processEvents()` aufruft, um sicherzustellen, dass die Aktualisierungen auch dann angezeigt werden, wenn keine Ereignisschleife vorhanden ist.

void QSplashScreen::setPixmap(const QPixmap &pixmap)

Legt die Pixmap fest, die als Bild für den Begrüßungsbildschirm verwendet werden soll: pixmap.

Siehe auch pixmap().

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

Zeichnet den Text „ message “ mit der Farbe „ color “ auf den Begrüßungsbildschirm und richtet den Text gemäß den Flags in „ alignment “ aus. Diese Funktion ruft „ repaint()“ auf, um sicherzustellen, dass der Begrüßungsbildschirm sofort neu gezeichnet wird. Dadurch bleibt die Meldung stets auf dem aktuellen Stand der Aktivitäten Ihrer Anwendung (z. B. beim Laden von Dateien).

Siehe auch Qt::Alignment, clearMessage() und 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.