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
QtWS25 Last Chance

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.
  • P Offline
    P Offline
    prakash02
    wrote on last edited by
    #1

    how to use QSplashScreen in an application of 100 files and each file has to change the message of QSplashScreen using showMessage.
    i.e., singleton instance of splash screen.

    pls any one show me light.

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

      You can make wrapper class for working with QSplashScreen and use it as singleton.

      1 Reply Last reply
      0
      • P Offline
        P Offline
        prakash02
        wrote on 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 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