Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Behind the Scenes
  3. Wiki Discussion
  4. Singleton instance of QSplashScreen
Qt 6.11 is out! See what's new in the release blog

Singleton instance of QSplashScreen

Scheduled Pinned Locked Moved Wiki Discussion
20 Posts 3 Posters 11.2k Views 1 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.
  • D Offline
    D Offline
    DenisKormalev
    wrote on last edited by
    #4

    Just create your own custom singleton-class which will have private QSplashScreen field and two public methods: one for setting this field (from place where you are creating splashscreen) and second for setting message.

    1 Reply Last reply
    0
    • P Offline
      P Offline
      prakash02
      wrote on last edited by
      #5

      Thanks for ur reply..

      I have created the singleton class SplashScreen
      i'm using this
      SplashScreen::getInstance->setMessage();

      to set the message at different files.
      But still i have a doubt where to initialize QApplication.

      1 Reply Last reply
      0
      • D Offline
        D Offline
        DenisKormalev
        wrote on last edited by
        #6

        Mmm, QApplication is commonly initialized in main() method. Maybe you mean QSplashScreen? If yes, than I think it will be ok for you to init it in main() too.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          alexander
          wrote on last edited by
          #7

          @class MySplash : public QSplashScreen
          {
          Q_OBJECT
          public:
          explicit MySplash(QObject parent = 0);
          static MySplash
          instance();

          private:
          MySplash* _inst;
          }@
          .cpp
          @
          MySplash
          MySplash::_inst = 0;
          MySplash* MySplash::instance()
          {
          if ( !_inst )
          _inst = new MySplash();
          return _inst;
          }@

          1 Reply Last reply
          0
          • P Offline
            P Offline
            prakash02
            wrote on last edited by
            #8

            @class SplashScreen : public QSplashScreen{

            public:

            static SplashScreen* getInstance();

            void destroyInstance();
            void SetSplashScreen();
            void SetMessage(const std::wstring& message);
            QString *splashMessage;
            CString progressText;

            private:
            QSplashScreen *hostSplash_;
            SplashScreen() {}

            ~SplashScreen(){}

            static SplashScreen* m_pInstance;

            };@.h file

            1 Reply Last reply
            0
            • P Offline
              P Offline
              prakash02
              wrote on last edited by
              #9

              @SplashScreen* SplashScreen::m_pInstance = NULL;

              SplashScreen* SplashScreen::getInstance() {

              if(NULL == m_pInstance ) {

              m_pInstance = new SplashScreen();

              }
              return m_pInstance;
              }

              void SplashScreen::destroyInstance() {

              delete m_pInstance;
              m_pInstance = NULL;
              }

              void SplashScreen::SetMessage(const std::wstring& message ) {

              progressText = message.c_str();
              char pC = (char)(LPCTSTR)progressText ;
              splashMessage->append(QString::fromAscii(pC));
              hostSplash_->showMessage(*splashMessage);

              }
              void SplashScreen::SetSplashScreen() {
              hostSplash_ = new QSplashScreen(QPixmap(":Resource Files/splash.jpg"));
              }@

              1 Reply Last reply
              0
              • A Offline
                A Offline
                alexander
                wrote on last edited by
                #10

                prakash02, and?

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  prakash02
                  wrote on last edited by
                  #11

                  This is .cpp file.

                  I initialized the QApplication in main function, but my doubt does i can use the SplashScreen instance other than from main class.

                  Any help is appreciable.Thanks in advance.

                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    alexander
                    wrote on last edited by
                    #12

                    prakash02, @SplashScreen* SplashScreen::m_pInstance = NULL;@ it's C style, it's better to use C++ style:
                    @SplashScreen* SplashScreen::m_pInstance = 0;@

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      alexander
                      wrote on last edited by
                      #13

                      And why do you use std::wstring instead QString?

                      1 Reply Last reply
                      0
                      • P Offline
                        P Offline
                        prakash02
                        wrote on last edited by
                        #14

                        I defined resource file of strings,now i want to use those messages to be display on QSplashScreen when the program execution calls that function which can be on different namespace or on different class.

                        1 Reply Last reply
                        0
                        • D Offline
                          D Offline
                          DenisKormalev
                          wrote on last edited by
                          #15

                          Why do you use CString and std::wstring for setting/storing text? Why not QString? Also using CString and LPCTSTR type will break cross-platform compatibility.

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            alexander
                            wrote on last edited by
                            #16

                            Denis Kormalev. :)

                            1 Reply Last reply
                            0
                            • D Offline
                              D Offline
                              DenisKormalev
                              wrote on last edited by
                              #17

                              2moderators of this section: please move this thread to more correspondent category (Desktop I think)

                              1 Reply Last reply
                              0
                              • A Offline
                                A Offline
                                alexander
                                wrote on last edited by
                                #18

                                prakash02, how do you defiine resource file of strings?

                                1 Reply Last reply
                                0
                                • P Offline
                                  P Offline
                                  prakash02
                                  wrote on last edited by
                                  #19

                                  Yes i can use QString, but previously those are used to display on the native windows dialog.Now I want to change those to QT to improve the look and feel.

                                  1 Reply Last reply
                                  0
                                  • A Offline
                                    A Offline
                                    alexander
                                    wrote on last edited by
                                    #20

                                    try to use QObject::tr("") for strings instead string table in resource file.

                                    1 Reply Last reply
                                    0

                                    • Login

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