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

Singleton instance of QSplashScreen

Scheduled Pinned Locked Moved Wiki Discussion
20 Posts 3 Posters 9.8k Views
  • 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