Custom splashscreen with text: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(Cleanup) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{LangSwitch}} | |||
[[Category:snippets]] | [[Category:snippets]] | ||
Snippet how to create a splashscreen with opacity and dynamic text. | |||
In main.cpp: | |||
<code> | |||
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(); | app.processEvents(); | ||
splash- | splash->showStatusMessage(QObject::tr("Initializing…")); | ||
/* Some code here */ | |||
app.processEvents(); | |||
splash->showStatusMessage(QObject::tr("Loading something…")); | |||
</code> | |||
customSplashScreen.h: | |||
<code> | |||
#ifndef CUSTOMSPLASHSCREEN_H | |||
#define CUSTOMSPLASHSCREEN_H | |||
#include <QSplashScreen> | |||
#include <QPainter> | |||
public: | class customSplashScreen : public QSplashScreen | ||
{ | |||
public: | |||
customSplashScreen(const QPixmap& 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 | |||
</code> | |||
customSplashScreen.cpp: | customSplashScreen.cpp: | ||
<code> | |||
#include "customSplashScreen.h" | |||
customSplashScreen::customSplashScreen(const QPixmap& pixmap) | |||
{ | |||
QSplashScreen::setPixmap(pixmap); | |||
}; | |||
customSplashScreen::~customSplashScreen() | |||
{ | |||
}; | |||
void 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; | |||
}; | |||
</code> |
Latest revision as of 13:26, 28 June 2015
En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh
Snippet how to create a splashscreen with opacity and dynamic text.
In main.cpp:
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& 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& 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;
};