How to create a splash screen with an induced delay: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
(Fixed example making just brute-force blocking synchronous sleep)
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
h1. How to create a splash screen with an induced delay.
{{LangSwitch}}
 
[[Category:HowTo]]
We have &quot;QSplashScreen&amp;quot;:http://doc.qt.nokia.com/latest/qsplashscreen.html which is used to cover up the starting delay of the program. More about splash screen is &quot;here&amp;quot;:http://doc.qt.nokia.com/latest/qsplashscreen.html.<br />Some times the programs might be quick enough ,so that the splash screen may not be visible. We may induce some delay to show the splash , as a decoration !
We have {{DocLink|QSplashScreen}} which is used to cover up the starting delay of the program. Some times the programs might be quick enough, so that the splash screen may not be visible. We may induce some delay to show the splash, as a decoration!
 
Here in this example, using &quot;QThread&amp;quot;:http://doc.qt.nokia.com/latest/qthread.html a delay is induced.


<code><br />#include &lt;QApplication&amp;gt;<br />#include &lt;QSplashScreen&amp;gt;<br />#include &lt;qthread.h&amp;gt;<br />#include &quot;mainwindow.h&amp;quot;
Single shot timer {{DocLink|QTimer}} will do.


class I : public QThread<br />{<br />public:<br /> static void sleep(unsigned long secs) {<br /> QThread::sleep(secs);<br /> }<br />};
<code>
#include <QApplication>
#include <QSplashScreen>
#include <QTimer>
#include "mainwindow.h"


int main(int argc, char *argv[])<br />{
int main(int argc, char *argv[])
 
{
QApplication app(argc, argv);<br /> QPixmap pixmap(&quot;splash.jpg&amp;quot;);<br /> QSplashScreen splash(pixmap);<br /> splash.show();<br /> MainWindow mainWin;<br /> mainWin.setWindowTitle(&quot;Application&amp;quot;);<br /> I::sleep(5); // splash is shown for 5 seconds<br /> mainWin.showMaximized();<br /> splash.finish(&amp;mainWin);<br /> return app.exec&amp;amp;#40;&amp;#41;;<br />}<br /></code>
    QApplication app(argc, argv);
 
    QPixmap pixmap("splash.jpg");
Easy! Happy coding!
    QSplashScreen splash(pixmap, Qt::WindowStaysOnTopHint);
 
    splash.show();
[[Category:HowTo]]
    QTimer::singleShot(5000, &splash, &QWidget::close); // keep displayed for 5 seconds
    MainWindow mainWin;
    mainWin.showMaximized();
    return app.exec();
}
</code>

Latest revision as of 06:54, 21 June 2019

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

We have QSplashScreen which is used to cover up the starting delay of the program. Some times the programs might be quick enough, so that the splash screen may not be visible. We may induce some delay to show the splash, as a decoration!

Single shot timer QTimer will do.

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

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap("splash.jpg");
    QSplashScreen splash(pixmap, Qt::WindowStaysOnTopHint);
    splash.show();
    QTimer::singleShot(5000, &splash, &QWidget::close); // keep displayed for 5 seconds
    MainWindow mainWin;
    mainWin.showMaximized();
    return app.exec();
}