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. Splash screen not showing on MacOS Ventura (13.0) (running on an Apple M1) and Qt 6.4.0.
Qt 6.11 is out! See what's new in the release blog

Splash screen not showing on MacOS Ventura (13.0) (running on an Apple M1) and Qt 6.4.0.

Scheduled Pinned Locked Moved Unsolved General and Desktop
20 Posts 5 Posters 3.7k Views 2 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.
  • SGaistS SGaist

    Hi,

    Please provide a minimal compilable example that shows this behaviour.

    Did you check if you have the same issue with an older version of Qt ?

    T Offline
    T Offline
    TheFlyingMooseMan
    wrote on last edited by
    #8

    @SGaist Here is one:

    #include <QApplication>
    #include <QDebug>
    #include <QSplashScreen>
    #include <QMainWindow>
    
    #include "ui_MainWindow.h"
    
    #define SB_DEBUG_INFO  QThread::currentThreadId() << QTime::currentTime().toString() <<  __FILE__ << __FUNCTION__ << __LINE__
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow()
        {
            ui.setupUi(this);
        }
    
        Ui::MainWindow ui;
    };
    
    void
    sleep(int seconds)
    {
        QTime dieTime=QTime::currentTime().addSecs(seconds);
        while(QTime::currentTime()<dieTime)
        {
            QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
        }
    }
    
    void displaySpashMountain(QApplication* _app)
    {
        QPixmap pm(":/images/splash.png");
        QSplashScreen splash(pm);
        qDebug() << SB_DEBUG_INFO << pm.height() << pm.width();
    
        splash.show();
        _app->processEvents();
        qDebug() << SB_DEBUG_INFO << "splash screen should show";
    
    
        MainWindow* mw=new MainWindow();
        qDebug() << SB_DEBUG_INFO << "sleep 10s";
        sleep(10);
        qDebug() << SB_DEBUG_INFO << "done sleep 10s";
    
        splash.finish(mw);
        qDebug() << SB_DEBUG_INFO << "splash screen done";
    
    
    }
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        displaySpashMountain(&app);
        return 0;
    }
    
    
    T 1 Reply Last reply
    0
    • D Offline
      D Offline
      Dariusz Maciejewski
      wrote on last edited by Dariusz Maciejewski
      #9

      I have updated to Ventura and immediately noticed same issue with Qt 5.15.3. The dialog that has a Qt::SplashScreen type won't show up if I start the app from CLI, but works fine when started from the Finder.

      The QML logic within the invisible dialog works fine (I properly receive a signal being emitted by a timer in the dialog QML file.

      Changing the dialog type to:
      Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint
      "solves" the issue.

      D 1 Reply Last reply
      0
      • T TheFlyingMooseMan

        @SGaist Here is one:

        #include <QApplication>
        #include <QDebug>
        #include <QSplashScreen>
        #include <QMainWindow>
        
        #include "ui_MainWindow.h"
        
        #define SB_DEBUG_INFO  QThread::currentThreadId() << QTime::currentTime().toString() <<  __FILE__ << __FUNCTION__ << __LINE__
        
        class MainWindow : public QMainWindow
        {
            Q_OBJECT
        
        public:
            MainWindow()
            {
                ui.setupUi(this);
            }
        
            Ui::MainWindow ui;
        };
        
        void
        sleep(int seconds)
        {
            QTime dieTime=QTime::currentTime().addSecs(seconds);
            while(QTime::currentTime()<dieTime)
            {
                QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
            }
        }
        
        void displaySpashMountain(QApplication* _app)
        {
            QPixmap pm(":/images/splash.png");
            QSplashScreen splash(pm);
            qDebug() << SB_DEBUG_INFO << pm.height() << pm.width();
        
            splash.show();
            _app->processEvents();
            qDebug() << SB_DEBUG_INFO << "splash screen should show";
        
        
            MainWindow* mw=new MainWindow();
            qDebug() << SB_DEBUG_INFO << "sleep 10s";
            sleep(10);
            qDebug() << SB_DEBUG_INFO << "done sleep 10s";
        
            splash.finish(mw);
            qDebug() << SB_DEBUG_INFO << "splash screen done";
        
        
        }
        
        int main(int argc, char *argv[])
        {
            QApplication app(argc, argv);
        
            displaySpashMountain(&app);
            return 0;
        }
        
        
        T Offline
        T Offline
        TheFlyingMooseMan
        wrote on last edited by
        #10

        @TheFlyingMooseMan @SGaist : is this enough of an example?

        1 Reply Last reply
        0
        • D Dariusz Maciejewski

          I have updated to Ventura and immediately noticed same issue with Qt 5.15.3. The dialog that has a Qt::SplashScreen type won't show up if I start the app from CLI, but works fine when started from the Finder.

          The QML logic within the invisible dialog works fine (I properly receive a signal being emitted by a timer in the dialog QML file.

          Changing the dialog type to:
          Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint
          "solves" the issue.

          D Offline
          D Offline
          DerReisende
          wrote on last edited by
          #11

          @Dariusz-Maciejewski I can confirm your workaround works here as well.

          T 1 Reply Last reply
          0
          • D DerReisende

            @Dariusz-Maciejewski I can confirm your workaround works here as well.

            T Offline
            T Offline
            TheFlyingMooseMan
            wrote on last edited by
            #12

            @DerReisende care to share your code? It did not work in my environment.

            T 1 Reply Last reply
            0
            • T TheFlyingMooseMan

              @DerReisende care to share your code? It did not work in my environment.

              T Offline
              T Offline
              TheFlyingMooseMan
              wrote on last edited by
              #13

              For all that's worth -- seems like no one seems to care anyways.
              I downgraded my M1 mac mini to Big Sur and doing a fresh install (wipe out hard drive ya da ya da ...)
              Splash screen is now working with exactly the same code in this configuration.
              Wonder if anyone is going to react LOL :)

              D 2 Replies Last reply
              0
              • T TheFlyingMooseMan

                For all that's worth -- seems like no one seems to care anyways.
                I downgraded my M1 mac mini to Big Sur and doing a fresh install (wipe out hard drive ya da ya da ...)
                Splash screen is now working with exactly the same code in this configuration.
                Wonder if anyone is going to react LOL :)

                D Offline
                D Offline
                DerReisende
                wrote on last edited by
                #14

                @TheFlyingMooseMan sorry didnt receive a notification that you replied to me. I am going to check if i can find the requested code again :)

                1 Reply Last reply
                0
                • T TheFlyingMooseMan

                  For all that's worth -- seems like no one seems to care anyways.
                  I downgraded my M1 mac mini to Big Sur and doing a fresh install (wipe out hard drive ya da ya da ...)
                  Splash screen is now working with exactly the same code in this configuration.
                  Wonder if anyone is going to react LOL :)

                  D Offline
                  D Offline
                  DerReisende
                  wrote on last edited by
                  #15

                  @TheFlyingMooseMan this what I am using:

                  QSplashScreen splash(QPixmap(":/resources/splash.png"));
                  #if defined(Q_OS_MAC) && defined(Q_PROCESSOR_ARM)
                  #if QT_VERSION <= QT_VERSION_CHECK(6, 5, 0)
                      //workaround invisible splash screen
                      splash.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
                  #endif
                  #endif
                      splash.show();
                  

                  Works for me™...

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    TheFlyingMooseMan
                    wrote on last edited by
                    #16

                    FWIW (Part 2):
                    Upgraded to Ventura, upgraded XCode to 14.2, redownloaded Qt.
                    Splash screen disappeared.

                    Going back to Big Sur, and reupgrade to Ventura.
                    This time I'll not upgrade XCode, but redownload Qt.

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      TheFlyingMooseMan
                      wrote on last edited by
                      #17

                      Well, F that.
                      I thought macos would allow me to go back to Big Sur just using time machine.
                      It wants me to reinstall Big Sur and then restore from Time Machine.
                      Since I don't get any responses on this thread, I won't investigate any further, let other people complain about this and let the ingenious minds at Qt prioritize this and figure this out.
                      Fact is that something has changed in macos libraries. This something is not taken into account by Qt.
                      My old style HFL 0.02.

                      SGaistS 1 Reply Last reply
                      0
                      • T TheFlyingMooseMan

                        Well, F that.
                        I thought macos would allow me to go back to Big Sur just using time machine.
                        It wants me to reinstall Big Sur and then restore from Time Machine.
                        Since I don't get any responses on this thread, I won't investigate any further, let other people complain about this and let the ingenious minds at Qt prioritize this and figure this out.
                        Fact is that something has changed in macos libraries. This something is not taken into account by Qt.
                        My old style HFL 0.02.

                        SGaistS Offline
                        SGaistS Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on last edited by
                        #18

                        @TheFlyingMooseMan the best way to make this known is to open a ticket on the bug report system. That way the Qt developers will be made aware of this change.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        T 1 Reply Last reply
                        0
                        • SGaistS SGaist

                          @TheFlyingMooseMan the best way to make this known is to open a ticket on the bug report system. That way the Qt developers will be made aware of this change.

                          T Offline
                          T Offline
                          TheFlyingMooseMan
                          wrote on last edited by
                          #19

                          @SGaist Thanks, created: https://bugreports.qt.io/browse/QTBUG-111750

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            David Fokkema
                            wrote on last edited by
                            #20

                            I just added a comment with my observations. In particular, the main window show() method activates the Qt app. So if you run from the terminal, the call to show() is the moment the desktop's menu bar switches from 'Terminal' to 'python'. That's also the moment the splash screen shows up, briefly. This is because the splash screen's show() method does not make the app active. If you click on the dock icon of the Qt app during startup then the splash screen shows up just fine.

                            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