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
Forum Updated to NodeBB v4.3 + New Features

Singleton instance of QSplashScreen

Scheduled Pinned Locked Moved Wiki Discussion
20 Posts 3 Posters 10.0k 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.
  • P Offline
    P Offline
    prakash02
    wrote on 26 Sept 2010, 14:24 last edited by
    #3

    since i'm a newbie ,could you please explain how to may use of wrapper class.

    1 Reply Last reply
    0
    • D Offline
      D Offline
      DenisKormalev
      wrote on 26 Sept 2010, 14:51 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 27 Sept 2010, 15:42 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 27 Sept 2010, 16:20 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 28 Sept 2010, 07:59 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 29 Sept 2010, 12:23 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 29 Sept 2010, 12:29 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 29 Sept 2010, 12:33 last edited by
                  #10

                  prakash02, and?

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    prakash02
                    wrote on 29 Sept 2010, 12:35 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 29 Sept 2010, 12:36 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 29 Sept 2010, 12:37 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 29 Sept 2010, 12:42 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 29 Sept 2010, 12:45 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 29 Sept 2010, 12:48 last edited by
                              #16

                              Denis Kormalev. :)

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                DenisKormalev
                                wrote on 29 Sept 2010, 12:48 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 29 Sept 2010, 12:50 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 29 Sept 2010, 12:52 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 4 Oct 2010, 06:10 last edited by
                                      #20

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

                                      1 Reply Last reply
                                      0

                                      12/20

                                      29 Sept 2010, 12:36

                                      • Login

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