Como criar um Splash Screen para uma aplicação em Qt

f0

Um splashscreen é um elemento gráfico que é exibido quando uma aplicação é iniciada.
Estes podem ser utilizados por razões puramente “estéticas” mas tornam-se particularmente úteis quando a aplicação demora algum tempo a carregar. Nestas situações é possível ir fornecendo alguma informação ao utilizador, de forma a que este saiba que a aplicação está a ser carregada.
O ponto de partida para criarmos o nosso splashscreen em Qt deverá naturalmente ser a classe que possibilita a sua criação, ou seja, QSplashScreen.

De seguida, e  como um exemplo ajuda sempre, vou disponibilizar as experiências que realizei:

#1 – O básico

Surge o splashcreen enquanto a janela principal é carregada. Neste caso é tudo muito rápido pois a aplicação exemplo é minúscula.

Exemplo:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSplashScreen>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap("f0.png");
    QSplashScreen splash;
    splash.setPixmap(pixmap);
    splash.show();
    MainWindow w;
    w.show();
    splash.finish(&w);
    return a.exec();
}

Download

#2 – Garantir que o splashscreen “sobrevive” por 5 segundos, enquanto exibo uma mensagem

Exemplo:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSplashScreen>
#include <QTimer>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QPixmap pixmap("f0.png");
    QSplashScreen splash;
    splash.setPixmap(pixmap);
    splash.show();
    splash.showMessage(QObject::trUtf8("A preparar a janela principal ..."), Qt::AlignRight|Qt::AlignTop, Qt::black);
    MainWindow w;
    QTimer::singleShot(5000, &splash, SLOT(close()));
    QTimer::singleShot(5000, &w, SLOT(show()));
    return a.exec();
}

Download

#3 – Tenho várias tarefas para executar, e quero ir mantendo o utilizador informado. Entretanto vou mostrando imagens diferentes.

Exemplo:

void operacao_03();

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplashScreen *splash = new QSplashScreen;
    splash->setPixmap(QPixmap(":/splash/f2"));
    splash->show();
    splash->showMessage(QObject::trUtf8("A executar a operação 01 ..."), Qt::AlignRight|Qt::AlignTop, Qt::black);
    operacao_01();
    splash->setPixmap(QPixmap(":/splash/f1"));
    splash->showMessage(QObject::trUtf8("A executar a operação 02 ..."), Qt::AlignRight|Qt::AlignBottom, Qt::black);
    operacao_02();
    splash->setPixmap(QPixmap(":/splash/f0"));
    splash->showMessage(QObject::trUtf8("A executar a operação 03 ..."), Qt::AlignRight|Qt::AlignTop, Qt::black);
    operacao_03();

    MainWindow w;
    w.show();
    splash->finish(&w);
    delete splash;
    return a.exec();
}

void operacao_01(){
    sleep(2);
}

void operacao_02(){
    sleep(2);
}

void operacao_03(){
    sleep(2);
}

Download

Anúncios

5 thoughts on “Como criar um Splash Screen para uma aplicação em Qt

  1. olha pra falar a verdade eu não sei sobre o assunto (C++?? quero estudar isso) que esta relacionado a esse post. mas se puder responder algumas perguntas:
    1- qual software que eu uso para fazer isso?(Como criar um Splash Screen para uma aplicação em Qt)
    2- oque é uma aplicação Qt? (procurei no google mais não achei resposta convincente)
    3-eu posso adicionar uma splash screen a um aplicativo normal *.exe?

    Obrigado. Bishock

    1. 1
      um compilador da família GCC, independentemente do Sistema Operativo que utiliza.
      2
      Uma framework, neste caso o Qt, que não é mais do que um conjunto de classes escritas para C++, que juntamente com esta linguagem de programação, permitem desenvolver aplicações com interfaces gráficas (GUI).
      3
      Se estiver a utilizar Windows, e como os programas depois de compilados ficam com extensão exe … penso que a resposta será sim :)

      Mas porquê tudo isto?
      1 – OpenSource
      2 – Multiplataforma
      3 – Qualidade

  2. respondendo a sua pergunta:
    quero aprender a adicionar uma aplash screen em algumas programações bem simples que eu fiz.. deu problema de “muitos criadores” de algumas aplicações caseiras que distribui pela net, apesar de já telas removidas..

    Enfim sim uso o windows :s

    Obrigado. Irei começar a explorar mais o site.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s