Difference between revisions of "Custom splashscreen with text"
From Qt Wiki
Line 3: | Line 3: | ||
= Custom splashscreen with text = | = Custom splashscreen with text = | ||
− | Snippet how to create a splashscreen with opacity and dynamic text: | + | Snippet how to create a splashscreen with opacity and dynamic text: |
+ | [[Image:http://img.mobypicture.com/aa470873918e7804b36e6fb037e5b0b0_view.jpg|screencap]] | ||
− | Example of main: | + | Example of main: |
+ | <code>QPixmap splashImage(":images/splash.png"); | ||
+ | QPixmap splashMask(":images/splashmask.png"); | ||
− | customSplashScreen '''splash = new customSplashScreen(splashImage); | + | customSplashScreen '''splash = new customSplashScreen(splashImage); |
− | + | splash->setMessageRect(QRect::QRect(7, 253, 415, 14), Qt::AlignCenter); // Setting the message position. | |
− | + | ||
− | + | QFont splashFont; | |
− | + | splashFont.setFamily("Arial"); | |
− | + | splashFont.setBold(true); | |
+ | splashFont.setPixelSize(9); | ||
+ | splashFont.setStretch(125); | ||
+ | |||
+ | splash->setFont(splashFont); | ||
+ | splash->setMask(splashMask); | ||
+ | splash->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen); | ||
+ | splash->show(); | ||
+ | |||
+ | /''' To intercept mousclick to hide splash screen. Since the | ||
+ | splash screen is typically displayed before the event loop | ||
+ | has started running, it is necessary to periodically call. */ | ||
+ | app.processEvents(); | ||
+ | |||
+ | splash->showStatusMessage(QObject::tr("Initializing…")); | ||
+ | |||
+ | /''' Some code here */ | ||
app.processEvents(); | app.processEvents(); | ||
− | splash- | + | splash->showStatusMessage(QObject::tr("Loading something…"));</code> |
− | customSplashScreen.h: | + | customSplashScreen.h: |
+ | <code>#ifndef CUSTOMSPLASHSCREEN_H | ||
+ | #define CUSTOMSPLASHSCREEN_H | ||
− | #include | + | #include <QSplashScreen> |
+ | #include <QPainter> | ||
− | class customSplashScreen | + | class customSplashScreen |
+ | :public QSplashScreen | ||
+ | { | ||
− | public: | + | public: |
+ | customSplashScreen(const QPixmap&amp; pixmap); | ||
+ | ~customSplashScreen(); | ||
+ | virtual void drawContents(QPainter *painter); | ||
+ | void showStatusMessage(const QString &message, const QColor &color = Qt::black); | ||
+ | void setMessageRect(QRect rect, int alignment = Qt::AlignLeft); | ||
− | private: | + | private: |
+ | QString message; | ||
+ | int alignement; | ||
+ | QColor color; | ||
+ | QRect rect; | ||
+ | }; | ||
#endif // CUSTOMSPLASHSCREEN_H</code> | #endif // CUSTOMSPLASHSCREEN_H</code> | ||
− | customSplashScreen.cpp: | + | customSplashScreen.cpp: |
+ | <code>#include "customSplashScreen.h" | ||
− | customSplashScreen::customSplashScreen(const QPixmap&amp; pixmap) | + | customSplashScreen::customSplashScreen(const QPixmap&amp; pixmap) |
+ | { | ||
+ | QSplashScreen::setPixmap(pixmap); | ||
+ | }; | ||
− | customSplashScreen::~customSplashScreen() | + | customSplashScreen::~customSplashScreen() |
+ | { | ||
+ | }; | ||
− | void customSplashScreen::drawContents(QPainter *painter) | + | void customSplashScreen::drawContents(QPainter *painter) |
+ | { | ||
+ | QPixmap textPix = QSplashScreen::pixmap(); | ||
+ | painter->setPen(this->color); | ||
+ | painter->drawText(this->rect, this->alignement, this->message); | ||
+ | }; | ||
− | void customSplashScreen::showStatusMessage(const QString &message, const QColor &color) | + | void customSplashScreen::showStatusMessage(const QString &message, const QColor &color) |
+ | { | ||
+ | this->message = message; | ||
+ | this->color = color; | ||
+ | this->showMessage(this->message, this->alignement, this->color); | ||
+ | }; | ||
− | void customSplashScreen::setMessageRect(QRect rect, int alignement) | + | void customSplashScreen::setMessageRect(QRect rect, int alignement) |
+ | { | ||
+ | this->rect = rect; | ||
+ | this->alignement = alignement; | ||
+ | };</code> | ||
− | Splash PNG: | + | Splash PNG: |
+ | [[Image:http://img.mobypicture.com/4ffeff271423757e1833f553a292bd1c_view.jpg|splash]] | ||
Mask PNG: | Mask PNG: |
Revision as of 10:01, 25 February 2015
Custom splashscreen with text
Snippet how to create a splashscreen with opacity and dynamic text: screencap
Example of main:
QPixmap splashImage(":images/splash.png");
QPixmap splashMask(":images/splashmask.png");
customSplashScreen '''splash = new customSplashScreen(splashImage);
splash->setMessageRect(QRect::QRect(7, 253, 415, 14), Qt::AlignCenter); // Setting the message position.
QFont splashFont;
splashFont.setFamily("Arial");
splashFont.setBold(true);
splashFont.setPixelSize(9);
splashFont.setStretch(125);
splash->setFont(splashFont);
splash->setMask(splashMask);
splash->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen);
splash->show();
/''' To intercept mousclick to hide splash screen. Since the
splash screen is typically displayed before the event loop
has started running, it is necessary to periodically call. */
app.processEvents();
splash->showStatusMessage(QObject::tr("Initializing…"));
/''' Some code here */
app.processEvents();
splash->showStatusMessage(QObject::tr("Loading something…"));
customSplashScreen.h:
#ifndef CUSTOMSPLASHSCREEN_H
#define CUSTOMSPLASHSCREEN_H
#include <QSplashScreen>
#include <QPainter>
class customSplashScreen
:public QSplashScreen
{
public:
customSplashScreen(const QPixmap&amp; pixmap);
~customSplashScreen();
virtual void drawContents(QPainter *painter);
void showStatusMessage(const QString &message, const QColor &color = Qt::black);
void setMessageRect(QRect rect, int alignment = Qt::AlignLeft);
private:
QString message;
int alignement;
QColor color;
QRect rect;
};
#endif // CUSTOMSPLASHSCREEN_H
customSplashScreen.cpp:
#include "customSplashScreen.h"
customSplashScreen::customSplashScreen(const QPixmap&amp; pixmap)
{
QSplashScreen::setPixmap(pixmap);
};
customSplashScreen::~customSplashScreen()
{
};
void customSplashScreen::drawContents(QPainter *painter)
{
QPixmap textPix = QSplashScreen::pixmap();
painter->setPen(this->color);
painter->drawText(this->rect, this->alignement, this->message);
};
void customSplashScreen::showStatusMessage(const QString &message, const QColor &color)
{
this->message = message;
this->color = color;
this->showMessage(this->message, this->alignement, this->color);
};
void customSplashScreen::setMessageRect(QRect rect, int alignement)
{
this->rect = rect;
this->alignement = alignement;
};
Splash PNG: splash
Mask PNG: