En esta página

QSplashScreen Class

El widget QSplashScreen proporciona una pantalla de bienvenida que se puede mostrar durante el inicio de la aplicación. Más...

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

Funciones Públicas

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)

Ranuras Públicas

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

Señales

void messageChanged(const QString &message)

Funciones protegidas

virtual void drawContents(QPainter *painter)

Funciones protegidas reimplementadas

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

Descripción Detallada

Una pantalla de bienvenida es un widget que suele mostrarse cuando se inicia una aplicación. Las pantallas splash se utilizan a menudo para aplicaciones que tienen tiempos de arranque largos (por ejemplo, aplicaciones de base de datos o de red que tardan en establecer conexiones) para proporcionar al usuario información de que la aplicación se está cargando.

La pantalla de bienvenida aparece en el centro de la pantalla. Puede ser útil añadir el Qt::WindowStaysOnTopHint a las banderas de ventana del widget de splash si quieres mantenerlo por encima de todas las demás ventanas del escritorio.

Algunos gestores de ventanas X11 no soportan la bandera "permanece arriba". Una solución es configurar un temporizador que periódicamente llame a raise() en la pantalla de inicio para simular el efecto de "permanecer en la parte superior".

El uso más común es mostrar una pantalla de inicio antes de que el widget principal se muestre en la pantalla. Esto se ilustra en el siguiente fragmento de código en el que se muestra una pantalla de bienvenida y se realizan algunas tareas de inicialización antes de que se muestre la ventana principal de la aplicación:

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

El usuario puede ocultar la pantalla de bienvenida pulsando sobre ella con el ratón. Para que el manejo del ratón funcione, llama a QApplication::processEvents() periódicamente durante el arranque.

A veces es útil actualizar la pantalla de bienvenida con mensajes, por ejemplo, anunciando conexiones establecidas o módulos cargados mientras se inicia la aplicación:

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 soporta esto con la función showMessage(). Si deseas hacer tu propio dibujo puedes obtener un puntero al pixmap utilizado en la pantalla de bienvenida con pixmap(). Alternativamente, puedes subclasificar QSplashScreen y reimplementar drawContents().

En caso de tener múltiples pantallas, también es posible mostrar la pantalla de bienvenida en una pantalla diferente a la principal. Por ejemplo:

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

Documentación de Funciones Miembro

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

Construye una pantalla de bienvenida que muestre pixmap.

No debería ser necesario configurar las banderas del widget, f, excepto quizás Qt::WindowStaysOnTopHint.

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

Esta función le permite especificar la pantalla para su splashscreen. El uso típico de este constructor es si tienes múltiples pantallas y prefieres tener la pantalla de inicio en una pantalla diferente a la principal. En ese caso pasa la dirección screen.

Esta es una función sobrecargada.

[virtual noexcept] QSplashScreen::~QSplashScreen()

Destructor.

[slot] void QSplashScreen::clearMessage()

Elimina el mensaje que se muestra en la pantalla de inicio.

Véase también showMessage().

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

Dibuja el contenido de la pantalla de bienvenida utilizando el pintor painter. La implementación por defecto dibuja el mensaje pasado por showMessage(). Reimplemente esta función si desea hacer su propio dibujo en la pantalla de inicio.

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

Reimplementa: QWidget::event(QEvent *event).

void QSplashScreen::finish(QWidget *mainWin)

Hace que la pantalla de inicio espere hasta que se muestre el widget mainWin antes de llamar a close() sobre sí misma.

QString QSplashScreen::message() const

Devuelve el mensaje que se muestra actualmente en la pantalla de inicio.

Véase también showMessage() y clearMessage().

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

Esta señal se emite cuando cambia el mensaje de la pantalla de inicio. message es el nuevo mensaje y es una cadena nula cuando el mensaje ha sido eliminado.

Véase también showMessage() y clearMessage().

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

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

const QPixmap QSplashScreen::pixmap() const

Devuelve el pixmap que se utiliza en la pantalla de inicio. La imagen no tiene nada del texto dibujado por las llamadas a showMessage().

Véase también setPixmap().

void QSplashScreen::repaint()

Esto anula QWidget::repaint(). Difiere de la función repaint estándar en que también llama a QCoreApplication::processEvents() para asegurar que las actualizaciones se muestran, incluso cuando no hay un bucle de eventos presente.

void QSplashScreen::setPixmap(const QPixmap &pixmap)

Establece el pixmap que se utilizará como imagen de la pantalla de inicio en pixmap.

Véase también pixmap().

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

Dibuja el texto message en la pantalla de inicio con el color color y alinea el texto de acuerdo con las banderas en alignment. Esta función llama a repaint() para asegurarse de que la pantalla de inicio se vuelve a pintar inmediatamente. Como resultado, el mensaje se mantiene actualizado con lo que tu aplicación está haciendo (por ejemplo, cargando archivos).

Ver también Qt::Alignment, clearMessage(), y 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.