Custom splashscreen with text: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
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: