QSplashScreen Class

Das QSplashScreen-Widget stellt einen Splash-Screen zur Verfügung, der beim Start der Anwendung angezeigt werden kann. Mehr...

Kopfzeile: #include <QSplashScreen>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Vererbungen: 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)

Reimplementierte geschützte Funktionen

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

Detaillierte Beschreibung

Ein Splashscreen ist ein Widget, das normalerweise beim Start einer Anwendung angezeigt wird. Splash-Screens werden oft für Anwendungen verwendet, die lange Startzeiten haben (z.B. Datenbank- oder Netzwerkanwendungen, die Zeit zum Verbindungsaufbau benötigen), um dem Benutzer eine Rückmeldung zu geben, dass die Anwendung geladen wird.

Der Startbildschirm wird in der Mitte des Bildschirms angezeigt. Es kann nützlich sein, die Qt::WindowStaysOnTopHint zu den Fensterflags des Splash-Widgets hinzuzufügen, wenn Sie es über allen anderen Fenstern auf dem Desktop halten wollen.

Einige X11-Fenstermanager unterstützen das Flag "bleibt oben" nicht. Eine Lösung besteht darin, einen Timer einzurichten, der periodisch raise() auf dem Splash-Screen aufruft, um den "Bleibt oben"-Effekt zu simulieren.

Die häufigste Anwendung ist die Anzeige eines Startbildschirms, bevor das Hauptwidget auf dem Bildschirm angezeigt wird. Dies wird im folgenden Codeschnipsel veranschaulicht, in dem ein Begrüßungsbildschirm angezeigt wird und einige Initialisierungsaufgaben durchgeführt werden, bevor das Hauptfenster der Anwendung angezeigt wird:

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 Begrüßungsbildschirm ausblenden, indem er mit der Maus auf ihn klickt. Damit die Mausbehandlung funktioniert, rufen Sie QApplication::processEvents() während des Starts regelmäßig auf.

Manchmal ist es nützlich, den Splashscreen mit Meldungen zu aktualisieren, z.B. wenn beim Starten der Anwendung Verbindungen hergestellt oder Module geladen werden:

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 selbst zeichnen möchten, können Sie mit pixmap() einen Zeiger auf die im Splashscreen verwendete Pixmap erhalten. Alternativ können Sie eine Unterklasse von QSplashScreen bilden und drawContents() neu implementieren.

Falls Sie mehrere Bildschirme haben, ist es auch möglich, den Splashscreen auf einem anderen als dem primären Bildschirm anzuzeigen. Zum Beispiel:

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

Member Function Dokumentation

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

Erstellen Sie einen Begrüßungsbildschirm, der pixmap anzeigt.

Es sollte nicht nötig 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())

Dies ist eine überladene Funktion.

Mit dieser Funktion können Sie den Bildschirm für Ihren Splashscreen angeben. Typischerweise wird dieser Konstruktor verwendet, wenn Sie mehrere Bildschirme haben und den Splashscreen auf einem anderen Bildschirm als dem Hauptbildschirm haben möchten. In diesem Fall übergeben Sie die richtige screen.

[virtual noexcept] QSplashScreen::~QSplashScreen()

Zerstörer.

[slot] void QSplashScreen::clearMessage()

Entfernt die Meldung, die auf dem Startbildschirm angezeigt wird

Siehe auch showMessage().

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

Zeichnen Sie den Inhalt des Splash-Screens mit dem Painter painter. Die Standardimplementierung zeichnet die mit showMessage() übergebene Nachricht. Implementieren Sie diese Funktion neu, wenn Sie Ihre eigenen Zeichnungen auf dem Startbildschirm erstellen möchten.

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

Reimplements: QWidget::event(QEvent *Event).

void QSplashScreen::finish(QWidget *mainWin)

Lässt den Splash-Screen warten, bis das Widget mainWin angezeigt wird, bevor er close() aufruft.

QString QSplashScreen::message() const

Gibt die Meldung zurück, die derzeit auf dem Startbildschirm angezeigt wird.

Siehe auch showMessage() und clearMessage().

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

Dieses Signal wird ausgegeben, wenn sich die Meldung auf dem Startbildschirm ändert. message ist die neue Meldung und ist ein Null-String, wenn die Meldung entfernt wurde.

Siehe auch showMessage() und clearMessage().

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

Reimplements: QWidget::mousePressEvent(QMouseEvent *event).

const QPixmap QSplashScreen::pixmap() const

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

Siehe auch setPixmap().

void QSplashScreen::repaint()

Diese Funktion hat Vorrang vor QWidget::repaint(). Sie unterscheidet sich von der Standardfunktion repaint dadurch, dass sie auch QCoreApplication::processEvents() aufruft, um sicherzustellen, dass die Aktualisierungen angezeigt werden, auch wenn keine Ereignisschleife vorhanden ist.

void QSplashScreen::setPixmap(const QPixmap &pixmap)

Setzt die Pixmap, die als Bild für den Startbildschirm verwendet wird, auf 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 Splash-Screen und richtet den Text entsprechend den Flags in alignment aus. Diese Funktion ruft repaint() auf, um sicherzustellen, dass der Splash-Screen sofort neu gezeichnet wird. Dadurch wird die Meldung auf dem neuesten Stand gehalten, was Ihre Anwendung gerade tut (z. B. das Laden von Dateien).

Siehe auch Qt::Alignment, clearMessage(), und message().

© 2025 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.