Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. SplashScreen stay on TaskManager
Forum Updated to NodeBB v4.3 + New Features

SplashScreen stay on TaskManager

Scheduled Pinned Locked Moved Unsolved General and Desktop
splashscreentask manager
29 Posts 3 Posters 10.4k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    mrjj
    Lifetime Qt Champion
    wrote on 1 Jan 2017, 16:57 last edited by
    #2

    Hi and welcome
    so the timer that calls close , it not working`?

    Q 1 Reply Last reply 1 Jan 2017, 17:01
    0
    • M mrjj
      1 Jan 2017, 16:57

      Hi and welcome
      so the timer that calls close , it not working`?

      Q Offline
      Q Offline
      QtA_
      wrote on 1 Jan 2017, 17:01 last edited by
      #3

      @mrjj said in SplashScreen stay on TaskManager:

      Hi and welcome
      so the timer that calls close , it not working`?

      Thank you,..

      yes all seem to work fine,....except that the application stay in my Task manager.
      :\

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mrjj
        Lifetime Qt Champion
        wrote on 1 Jan 2017, 17:10 last edited by mrjj 1 Jan 2017, 17:11
        #4

        Oh. that way.
        Well you dont have a MainWindow.
        QApplication will close application when the last window is closed.
        Not sure it knows about QSplashScreen.

        But when you dont have any mainwindow/top level widgets, it keeps running.

        You can make it exit calling quit() but its hard with just a QSplashScreen.

        So as you see in tut 28. he does have Mainwindow also ?

        Q 1 Reply Last reply 1 Jan 2017, 17:14
        1
        • M mrjj
          1 Jan 2017, 17:10

          Oh. that way.
          Well you dont have a MainWindow.
          QApplication will close application when the last window is closed.
          Not sure it knows about QSplashScreen.

          But when you dont have any mainwindow/top level widgets, it keeps running.

          You can make it exit calling quit() but its hard with just a QSplashScreen.

          So as you see in tut 28. he does have Mainwindow also ?

          Q Offline
          Q Offline
          QtA_
          wrote on 1 Jan 2017, 17:14 last edited by
          #5

          @mrjj said in SplashScreen stay on TaskManager:

          Oh. that way.
          Well you dont have a MainWindow.
          QApplication will close application when the last window is closed.
          Not sure it knows about QSplashScreen.

          But when you dont have any mainwindow/top level widgets, it keeps running.

          You can make it exit calling quit() but its hard with just a QSplashScreen.

          So as you see in tut 28. he does have Mainwindow also ?

          yes the tutorial have windows application...
          but I don't need it..

          in fact my project is simple,...
          I want to make a splashscreen with PNG transparency,..(without windows form)
          so I don't know if this is the way to go for it..

          I want to start with this,..and then,..add features...to be customized,.like time delay, fadein/fadeout, animated PNG etc...

          M 1 Reply Last reply 1 Jan 2017, 17:20
          0
          • Q QtA_
            1 Jan 2017, 17:14

            @mrjj said in SplashScreen stay on TaskManager:

            Oh. that way.
            Well you dont have a MainWindow.
            QApplication will close application when the last window is closed.
            Not sure it knows about QSplashScreen.

            But when you dont have any mainwindow/top level widgets, it keeps running.

            You can make it exit calling quit() but its hard with just a QSplashScreen.

            So as you see in tut 28. he does have Mainwindow also ?

            yes the tutorial have windows application...
            but I don't need it..

            in fact my project is simple,...
            I want to make a splashscreen with PNG transparency,..(without windows form)
            so I don't know if this is the way to go for it..

            I want to start with this,..and then,..add features...to be customized,.like time delay, fadein/fadeout, animated PNG etc...

            M Offline
            M Offline
            mrjj
            Lifetime Qt Champion
            wrote on 1 Jan 2017, 17:20 last edited by
            #6

            @QtA_
            Ok, "(without windows form)" means with no borders or caption etc?

            I think you can use splashscreen for this but not sure its really needed.

            Will it be sort of a class others can use , as a super splashscreen thing or
            what is the goal ?

            Well you current issue can be fixed by calling apps quit() when you want the app to exit.
            like 2 timers. one call close for splashscreen and other call quit()
            but it all depends on how u want it to work.

            Q 1 Reply Last reply 1 Jan 2017, 17:31
            0
            • M mrjj
              1 Jan 2017, 17:20

              @QtA_
              Ok, "(without windows form)" means with no borders or caption etc?

              I think you can use splashscreen for this but not sure its really needed.

              Will it be sort of a class others can use , as a super splashscreen thing or
              what is the goal ?

              Well you current issue can be fixed by calling apps quit() when you want the app to exit.
              like 2 timers. one call close for splashscreen and other call quit()
              but it all depends on how u want it to work.

              Q Offline
              Q Offline
              QtA_
              wrote on 1 Jan 2017, 17:31 last edited by
              #7

              @mrjj said in SplashScreen stay on TaskManager:

              @QtA_
              Ok, "(without windows form)" means with no borders or caption etc?

              I think you can use splashscreen for this but not sure its really needed.

              Will it be sort of a class others can use , as a super splashscreen thing or
              what is the goal ?

              Well you current issue can be fixed by calling apps quit() when you want the app to exit.
              like 2 timers. one call close for splashscreen and other call quit()
              but it all depends on how u want it to work.

              that's why I'm here :)

              I'm a biginner with C++, so need to understand manything actually.
              my english is also not very good, but its ok I think. :)

              The goal should be something like this:

              1. create an EXE allowing parameters to show splashscreen.

              ex:
              mysplash.exe "c:/my images/logo1.png" /d:3 /fi:1 /fo:1

              wich:
              /d = delay
              /fi = fade in time delay
              /fo = fade out time delay

              then,...few version after,...allowing to execute splash with mutliple image running to make an animated splash with PNG files.. :)

              M 1 Reply Last reply 1 Jan 2017, 17:36
              0
              • Q QtA_
                1 Jan 2017, 17:31

                @mrjj said in SplashScreen stay on TaskManager:

                @QtA_
                Ok, "(without windows form)" means with no borders or caption etc?

                I think you can use splashscreen for this but not sure its really needed.

                Will it be sort of a class others can use , as a super splashscreen thing or
                what is the goal ?

                Well you current issue can be fixed by calling apps quit() when you want the app to exit.
                like 2 timers. one call close for splashscreen and other call quit()
                but it all depends on how u want it to work.

                that's why I'm here :)

                I'm a biginner with C++, so need to understand manything actually.
                my english is also not very good, but its ok I think. :)

                The goal should be something like this:

                1. create an EXE allowing parameters to show splashscreen.

                ex:
                mysplash.exe "c:/my images/logo1.png" /d:3 /fi:1 /fo:1

                wich:
                /d = delay
                /fi = fade in time delay
                /fo = fade out time delay

                then,...few version after,...allowing to execute splash with mutliple image running to make an animated splash with PNG files.. :)

                M Offline
                M Offline
                mrjj
                Lifetime Qt Champion
                wrote on 1 Jan 2017, 17:36 last edited by
                #8

                @QtA_
                ahh, sort of fancy app loader. :)
                well that is a fun project.

                You english is fine. :)

                That should be possible for a first project. Good luck and feel free to ask.

                Q 1 Reply Last reply 1 Jan 2017, 17:38
                0
                • M mrjj
                  1 Jan 2017, 17:36

                  @QtA_
                  ahh, sort of fancy app loader. :)
                  well that is a fun project.

                  You english is fine. :)

                  That should be possible for a first project. Good luck and feel free to ask.

                  Q Offline
                  Q Offline
                  QtA_
                  wrote on 1 Jan 2017, 17:38 last edited by
                  #9

                  @mrjj said in SplashScreen stay on TaskManager:

                  @QtA_
                  ahh, sort of fancy app loader. :)
                  well that is a fun project.

                  You english is fine. :)

                  That should be possible for a first project. Good luck and feel free to ask.

                  Thank you very much,..
                  I'm a fancy girl :)

                  return a.quit();
                  

                  do not close the process,..do I miss something ?

                  M 1 Reply Last reply 1 Jan 2017, 17:40
                  0
                  • Q QtA_
                    1 Jan 2017, 17:38

                    @mrjj said in SplashScreen stay on TaskManager:

                    @QtA_
                    ahh, sort of fancy app loader. :)
                    well that is a fun project.

                    You english is fine. :)

                    That should be possible for a first project. Good luck and feel free to ask.

                    Thank you very much,..
                    I'm a fancy girl :)

                    return a.quit();
                    

                    do not close the process,..do I miss something ?

                    M Offline
                    M Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on 1 Jan 2017, 17:40 last edited by mrjj 1 Jan 2017, 17:43
                    #10

                    @QtA_
                    Hi
                    do you now have
                    return a.exec();
                    return a.quit();

                    ?

                    it stays inside a.exec().

                    you can try
                    QTimer::singleShot(2500,&app,SLOT(quit()));
                    should kill it all after 2,5 secs.
                    U must keep return a.exec(); to use timers. Its drives the eventloop :)

                    Q 1 Reply Last reply 1 Jan 2017, 17:43
                    0
                    • M mrjj
                      1 Jan 2017, 17:40

                      @QtA_
                      Hi
                      do you now have
                      return a.exec();
                      return a.quit();

                      ?

                      it stays inside a.exec().

                      you can try
                      QTimer::singleShot(2500,&app,SLOT(quit()));
                      should kill it all after 2,5 secs.
                      U must keep return a.exec(); to use timers. Its drives the eventloop :)

                      Q Offline
                      Q Offline
                      QtA_
                      wrote on 1 Jan 2017, 17:43 last edited by
                      #11

                      @mrjj said in SplashScreen stay on TaskManager:

                      @QtA_
                      Hi
                      do you now have
                      return a.exec();
                      return a.quit();

                      ?

                      it stays inside a.exec().

                      yes

                      M 1 Reply Last reply 1 Jan 2017, 17:44
                      0
                      • Q QtA_
                        1 Jan 2017, 17:43

                        @mrjj said in SplashScreen stay on TaskManager:

                        @QtA_
                        Hi
                        do you now have
                        return a.exec();
                        return a.quit();

                        ?

                        it stays inside a.exec().

                        yes

                        M Offline
                        M Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on 1 Jan 2017, 17:44 last edited by
                        #12

                        @QtA_
                        You need to send it signal to quit.
                        Try
                        QTimer::singleShot(2500,&app,SLOT(quit()));
                        dont remove the exec() part.
                        its very important to use signals.

                        1 Reply Last reply
                        0
                        • Q Offline
                          Q Offline
                          QtA_
                          wrote on 1 Jan 2017, 17:51 last edited by
                          #13

                          nope,..:( still active.

                          #include <QApplication>
                          #include <QSplashScreen>
                          #include <QTimer>
                          
                          int main(int argc, char *argv[])
                          {
                              QApplication a(argc, argv);
                              QSplashScreen *splash=new QSplashScreen;
                              splash->setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                              splash->show();
                              QTimer::singleShot(2500,splash,SLOT(close()));
                              QTimer::singleShot(2500,splash,SLOT(quit()));
                          
                              return a.exec();
                              return a.quit();
                          
                          }
                          
                          M 1 Reply Last reply 1 Jan 2017, 17:58
                          0
                          • Q QtA_
                            1 Jan 2017, 17:51

                            nope,..:( still active.

                            #include <QApplication>
                            #include <QSplashScreen>
                            #include <QTimer>
                            
                            int main(int argc, char *argv[])
                            {
                                QApplication a(argc, argv);
                                QSplashScreen *splash=new QSplashScreen;
                                splash->setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                splash->show();
                                QTimer::singleShot(2500,splash,SLOT(close()));
                                QTimer::singleShot(2500,splash,SLOT(quit()));
                            
                                return a.exec();
                                return a.quit();
                            
                            }
                            
                            M Offline
                            M Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on 1 Jan 2017, 17:58 last edited by mrjj 1 Jan 2017, 18:02
                            #14

                            @QtA_
                            You are asking it wrongly :)

                            QTimer::singleShot(2500,splash,SLOT(quit())); <<<< wrong object. should be &app

                            you are asking the timer to call quit() on splash, which splash dont have.

                            QTimer::singleShot(2500,&app,SLOT(quit()));

                            Update:
                            Also
                            The return statement will make it leave a function
                            so

                            return a.exec();
                            return a.quit(); <<< u can never, ever get here :)

                            1 Reply Last reply
                            0
                            • Q Offline
                              Q Offline
                              QtA_
                              wrote on 1 Jan 2017, 18:05 last edited by
                              #15

                              Thank you very much !! :)
                              so i've added:

                              QTimer::singleShot(2500,&a,SLOT(quit()));
                              

                              and removed

                              return a.exec();
                              

                              seem to work fine now :)

                              Question...

                              why do I need to put time delay on quit if already the time done ?
                              I mean,..

                              QTimer::singleShot(2500,&a,SLOT(quit()));
                              

                              must be

                              QTimer::singleShot(0,&a,SLOT(quit()));
                              

                              ?

                              M 1 Reply Last reply 1 Jan 2017, 18:07
                              0
                              • Q QtA_
                                1 Jan 2017, 18:05

                                Thank you very much !! :)
                                so i've added:

                                QTimer::singleShot(2500,&a,SLOT(quit()));
                                

                                and removed

                                return a.exec();
                                

                                seem to work fine now :)

                                Question...

                                why do I need to put time delay on quit if already the time done ?
                                I mean,..

                                QTimer::singleShot(2500,&a,SLOT(quit()));
                                

                                must be

                                QTimer::singleShot(0,&a,SLOT(quit()));
                                

                                ?

                                M Offline
                                M Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on 1 Jan 2017, 18:07 last edited by
                                #16

                                @QtA_
                                Hi
                                Np.

                                Does it display long enough with
                                QTimer::singleShot(0,&a,SLOT(quit())); ?

                                Then its ok.

                                1 Reply Last reply
                                0
                                • Q Offline
                                  Q Offline
                                  QtA_
                                  wrote on 1 Jan 2017, 18:10 last edited by
                                  #17

                                  ok ...I've change the close by the quit.
                                  instead adding a new line. :)

                                  Thanks again for all your help.
                                  Angie xx

                                  M 1 Reply Last reply 1 Jan 2017, 18:10
                                  0
                                  • Q QtA_
                                    1 Jan 2017, 18:10

                                    ok ...I've change the close by the quit.
                                    instead adding a new line. :)

                                    Thanks again for all your help.
                                    Angie xx

                                    M Offline
                                    M Offline
                                    mrjj
                                    Lifetime Qt Champion
                                    wrote on 1 Jan 2017, 18:10 last edited by
                                    #18

                                    @QtA_
                                    Np. Have fun programming. :)

                                    1 Reply Last reply
                                    0
                                    • Chris KawaC Offline
                                      Chris KawaC Offline
                                      Chris Kawa
                                      Lifetime Qt Champion
                                      wrote on 1 Jan 2017, 18:30 last edited by Chris Kawa 1 Jan 2017, 18:40
                                      #19

                                      You don't need to force the app quit. It's not very flexible in the long run. By default Qt app quits automatically when a last window is closed. This is controlled in two places: on application level with setQuitOnLastWindowClosed (the default is true, so no need to change that). The other place is at the widget level with an attribute Qt::WA_QuitOnClose. This attribute is by default enabled for top level windows i.e. widgets with flag Qt::Window or Qt::Dialog except for certain types, including menus, tooltips and splashscreen.

                                      Since a splashscreen is all you have you can just turn the attribute back on:

                                      int main(int argc, char *argv[])
                                      {
                                          QApplication a(argc, argv);
                                          QSplashScreen *splash = new QSplashScreen;
                                          splash->setAttribute(Qt::WA_QuitOnClose);  // <-- the relevant line
                                          splash->setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                          splash->show();
                                          QTimer::singleShot(2500,splash,SLOT(close()));
                                          return a.exec();
                                      }
                                      

                                      Btw. Technically this code leaks memory as you never delete the splash instance. To keep it clean you have couple of options:

                                      • manually delete the splash after the call to exec
                                      • add WA_DeleteOnClose attribute to the splash
                                      • (the easiest and recommended) just create the splash instance on the stack:
                                      QSplashScreen splash;
                                      splash.setAttribute(Qt::WA_QuitOnClose);
                                      splash.setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                      splash.show();
                                      QTimer::singleShot(2500,&splash,SLOT(close()));
                                      
                                      M 1 Reply Last reply 1 Jan 2017, 18:41
                                      2
                                      • Chris KawaC Chris Kawa
                                        1 Jan 2017, 18:30

                                        You don't need to force the app quit. It's not very flexible in the long run. By default Qt app quits automatically when a last window is closed. This is controlled in two places: on application level with setQuitOnLastWindowClosed (the default is true, so no need to change that). The other place is at the widget level with an attribute Qt::WA_QuitOnClose. This attribute is by default enabled for top level windows i.e. widgets with flag Qt::Window or Qt::Dialog except for certain types, including menus, tooltips and splashscreen.

                                        Since a splashscreen is all you have you can just turn the attribute back on:

                                        int main(int argc, char *argv[])
                                        {
                                            QApplication a(argc, argv);
                                            QSplashScreen *splash = new QSplashScreen;
                                            splash->setAttribute(Qt::WA_QuitOnClose);  // <-- the relevant line
                                            splash->setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                            splash->show();
                                            QTimer::singleShot(2500,splash,SLOT(close()));
                                            return a.exec();
                                        }
                                        

                                        Btw. Technically this code leaks memory as you never delete the splash instance. To keep it clean you have couple of options:

                                        • manually delete the splash after the call to exec
                                        • add WA_DeleteOnClose attribute to the splash
                                        • (the easiest and recommended) just create the splash instance on the stack:
                                        QSplashScreen splash;
                                        splash.setAttribute(Qt::WA_QuitOnClose);
                                        splash.setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                        splash.show();
                                        QTimer::singleShot(2500,&splash,SLOT(close()));
                                        
                                        M Offline
                                        M Offline
                                        mrjj
                                        Lifetime Qt Champion
                                        wrote on 1 Jan 2017, 18:41 last edited by
                                        #20

                                        @Chris-Kawa
                                        Much better with WA_QuitOnClose, indeed. :)

                                        Do you know if QSplashScreen can do anything special compared to a plain QWidget in terms
                                        of her overall goal? ( sort of fancy launcher )

                                        Im not sure if a custom widget is not more fun later when she wants animations and fade in/out effects etc. Of Course she can derive from QSplashScreen but I do wonder if it
                                        give anything of benefit for this use case. ?

                                        1 Reply Last reply
                                        0
                                        • Q Offline
                                          Q Offline
                                          QtA_
                                          wrote on 1 Jan 2017, 18:50 last edited by
                                          #21

                                          Thank you guys,,...
                                          it seem to work,..

                                          however..many questions in my little brain..

                                          splash name is my variable right ?
                                          so may I redefine it many times ?

                                          #include <QApplication>
                                          #include <QSplashScreen>
                                          #include <QTimer>
                                          
                                          int main(int argc, char *argv[])
                                          {
                                              QApplication a(argc, argv);
                                              QSplashScreen *splash = new QSplashScreen;
                                              splash->setAttribute(Qt::WA_QuitOnClose);  // <-- the relevant line
                                              splash->setPixmap(QPixmap ("C:/Users/public/test/Logo.png"));
                                              splash->show();
                                              QTimer::singleShot(2500,splash,SLOT(close()));
                                              
                                              splash->setPixmap(QPixmap ("C:/Users/public/test/Logo1.png"));
                                              splash->show();
                                              QTimer::singleShot(2500,splash,SLOT(close()));
                                              
                                              return a.exec();
                                          }
                                          

                                          seem it keep always the last image...

                                          1 Reply Last reply
                                          0

                                          11/29

                                          1 Jan 2017, 17:43

                                          • Login

                                          • Login or register to search.
                                          11 out of 29
                                          • First post
                                            11/29
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved