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. Qt6 platform rendering issues on Ubuntu 22.04
Forum Update on Monday, May 27th 2025

Qt6 platform rendering issues on Ubuntu 22.04

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 4 Posters 4.0k 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.
  • R Offline
    R Offline
    Robert Hairgrove
    wrote on last edited by
    #1

    After updating my C++ desktop application to build with Qt 6.5, I noticed strange changes in the rendering of the widgets. For example, there are no window borders, and setting enabled = false for labels, etc. does not make them appear disabled. I have to add a command-line option -platform xcb to run my app in order to see the title bar.

    Here are the screenshots of the different ways the main window is rendered for comparison:

    1. Built with Qt 5.15.5:
      platform_default_qt5.png

    2. Built with Qt 6.5, default appearance (no command-line option) ... notice how there is no window border:
      platform_default_wayland.png

    3. Built with Qt 6.5, command-line option -platform xcb added:
      platform_xcb.png

    Notice that on Qt 5, my "To do" list is nicely set to disabled gray look, whereas all labels look enabled with Qt 6 in both renderings.

    What is the least intrusive way of making the newer versions look like the older ones?

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Robert Hairgrove
      wrote on last edited by
      #2

      Here is a screenshot with an active database in the app built with Qt 5.15, showing the "To do" list with different stages enabled and disabled:
      platform_qt5_active.png

      SGaistS JonBJ 2 Replies Last reply
      0
      • R Robert Hairgrove

        Here is a screenshot with an active database in the app built with Qt 5.15, showing the "To do" list with different stages enabled and disabled:
        platform_qt5_active.png

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

        Hi,

        Do you have the same issue if you use the fusion style ?

        By the way, which desktop environment are you using ?

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

        R 2 Replies Last reply
        0
        • SGaistS SGaist

          Hi,

          Do you have the same issue if you use the fusion style ?

          By the way, which desktop environment are you using ?

          R Offline
          R Offline
          Robert Hairgrove
          wrote on last edited by
          #4

          @SGaist Thanks for looking at this. I am basically running a default desktop which Ubuntu 22.04 has configured. I don't really know what I am doing here, since I never changed anything. But I saw somewhere references to environment variables beginning with XDG_..., so here are the results of a few of those:

          bob@bobs-laptop:~$ echo $XDG_SESSION_TYPE 
          wayland
          bob@bobs-laptop:~$ echo $XDG_SESSION_DESKTOP 
          ubuntu
          bob@bobs-laptop:~$ echo $XDG_CURRENT_DESKTOP 
          ubuntu:GNOME
          

          If I give this option on the command line: -patform xcb as mentioned above, are there any options I can add after that? I looked all over but could not find any documentation about what the allowed options are, except for -platform windows which has a lot of extra options.

          As to fusion, I get a fatal error when I put ? -platform fusion` on the command line:

          This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
          
          Available platform plugins are: xcb, offscreen, minimal, vkkhrdisplay, eglfs, vnc, linuxfb, wayland, minimalegl, wayland-egl.
          

          What do I need to do in order to get fusion to work?

          1 Reply Last reply
          0
          • SGaistS SGaist

            Hi,

            Do you have the same issue if you use the fusion style ?

            By the way, which desktop environment are you using ?

            R Offline
            R Offline
            Robert Hairgrove
            wrote on last edited by
            #5

            @SGaist I found out how to set the "Fusion" style here in another forum thread.

            So I added this line to my main() function right after creating the instance of QApplication:

            qApp->setStyle(QStyleFactory::create("Fusion"));
            

            It doesn't have any effect, AFAICT.

            JoeCFDJ 1 Reply Last reply
            0
            • R Robert Hairgrove

              @SGaist I found out how to set the "Fusion" style here in another forum thread.

              So I added this line to my main() function right after creating the instance of QApplication:

              qApp->setStyle(QStyleFactory::create("Fusion"));
              

              It doesn't have any effect, AFAICT.

              JoeCFDJ Offline
              JoeCFDJ Offline
              JoeCFD
              wrote on last edited by JoeCFD
              #6

              @Robert-Hairgrove I just wrote a small test program to confirm that qlabel is greyed out if it is disabled. Qt: 6.5.2 and OS: Ubuntu 22.04.

              R 1 Reply Last reply
              0
              • JoeCFDJ JoeCFD

                @Robert-Hairgrove I just wrote a small test program to confirm that qlabel is greyed out if it is disabled. Qt: 6.5.2 and OS: Ubuntu 22.04.

                R Offline
                R Offline
                Robert Hairgrove
                wrote on last edited by
                #7

                @JoeCFD Thanks ... would you mind sharing your code with us? :)

                JoeCFDJ 1 Reply Last reply
                0
                • R Robert Hairgrove

                  @JoeCFD Thanks ... would you mind sharing your code with us? :)

                  JoeCFDJ Offline
                  JoeCFDJ Offline
                  JoeCFD
                  wrote on last edited by JoeCFD
                  #8

                  @Robert-Hairgrove
                  main.cpp

                  #include "helpwidget.h"
                  
                  #include <QApplication>
                  
                  int main( int argc, char *argv[] )
                  {
                      QApplication app(argc, argv);
                  
                      auto widget = new HelpWidget;
                      widget->show();
                  
                      return app.exec();
                  }
                  

                  helpwidget.h

                  #ifndef HELPWIDGET_H
                  #define HELPWIDGET_H
                  
                  #include <QWidget>
                  
                  //! [0]
                  class HelpWidget : public QWidget
                  {
                      Q_OBJECT
                  
                  public:
                      HelpWidget(QWidget *parent = nullptr);
                  
                  };
                  //! [0]
                  
                  #endif // HelpWidget_H
                  

                  helpwidget.cpp

                  #include <QVBoxLayout>
                  #include <QLabel>
                  #include <QPushButton>
                  
                  
                  #include "helpwidget.h"
                  
                  HelpWidget::HelpWidget( QWidget * parent )
                      : QWidget(parent) 
                  {    
                      auto layout = new QVBoxLayout( this );
                      setMinimumSize( 400, 400 );
                  
                      auto label = new QLabel( "Dis/enabled test", this );
                      auto button = new QPushButton( "Press", this );
                  
                      layout->addWidget( label );
                      layout->addWidget( button );
                  
                      connect( button, &QPushButton::pressed,
                               [=](){  auto isEnabled = label->isEnabled();
                                       label->setEnabled( !isEnabled ); } );
                  }
                  
                  
                  R 1 Reply Last reply
                  0
                  • JoeCFDJ JoeCFD

                    @Robert-Hairgrove
                    main.cpp

                    #include "helpwidget.h"
                    
                    #include <QApplication>
                    
                    int main( int argc, char *argv[] )
                    {
                        QApplication app(argc, argv);
                    
                        auto widget = new HelpWidget;
                        widget->show();
                    
                        return app.exec();
                    }
                    

                    helpwidget.h

                    #ifndef HELPWIDGET_H
                    #define HELPWIDGET_H
                    
                    #include <QWidget>
                    
                    //! [0]
                    class HelpWidget : public QWidget
                    {
                        Q_OBJECT
                    
                    public:
                        HelpWidget(QWidget *parent = nullptr);
                    
                    };
                    //! [0]
                    
                    #endif // HelpWidget_H
                    

                    helpwidget.cpp

                    #include <QVBoxLayout>
                    #include <QLabel>
                    #include <QPushButton>
                    
                    
                    #include "helpwidget.h"
                    
                    HelpWidget::HelpWidget( QWidget * parent )
                        : QWidget(parent) 
                    {    
                        auto layout = new QVBoxLayout( this );
                        setMinimumSize( 400, 400 );
                    
                        auto label = new QLabel( "Dis/enabled test", this );
                        auto button = new QPushButton( "Press", this );
                    
                        layout->addWidget( label );
                        layout->addWidget( button );
                    
                        connect( button, &QPushButton::pressed,
                                 [=](){  auto isEnabled = label->isEnabled();
                                         label->setEnabled( !isEnabled ); } );
                    }
                    
                    
                    R Offline
                    R Offline
                    Robert Hairgrove
                    wrote on last edited by
                    #9

                    @JoeCFD Thanks!

                    Could you also please post the contents of the *.pro file (or CMake project file) that you used to build this?

                    JoeCFDJ 1 Reply Last reply
                    0
                    • R Robert Hairgrove

                      @JoeCFD Thanks!

                      Could you also please post the contents of the *.pro file (or CMake project file) that you used to build this?

                      JoeCFDJ Offline
                      JoeCFDJ Offline
                      JoeCFD
                      wrote on last edited by JoeCFD
                      #10

                      @Robert-Hairgrove There you.
                      testlabel.pro

                      QT += widgets
                      
                      HEADERS += \
                              helpwidget.h 
                      
                      SOURCES += \
                              helpwidget.cpp \
                              main.cpp
                      
                      R 1 Reply Last reply
                      0
                      • JoeCFDJ JoeCFD

                        @Robert-Hairgrove There you.
                        testlabel.pro

                        QT += widgets
                        
                        HEADERS += \
                                helpwidget.h 
                        
                        SOURCES += \
                                helpwidget.cpp \
                                main.cpp
                        
                        R Offline
                        R Offline
                        Robert Hairgrove
                        wrote on last edited by
                        #11

                        @JoeCFD Your code builds and runs OK, but when I click on the "Press" button, the label does not change its appearance.

                        Please post the results of the following commands run in a terminal:

                        echo $XDG_SESSION_TYPE
                        echo $XDG_SESSION_DESKTOP
                        echo $XDG_CURRENT_DESKTOP
                        

                        Also:

                        echo $QT_QPA_PLATFORM
                        

                        Thank you!

                        JoeCFDJ 1 Reply Last reply
                        0
                        • R Robert Hairgrove

                          @JoeCFD Your code builds and runs OK, but when I click on the "Press" button, the label does not change its appearance.

                          Please post the results of the following commands run in a terminal:

                          echo $XDG_SESSION_TYPE
                          echo $XDG_SESSION_DESKTOP
                          echo $XDG_CURRENT_DESKTOP
                          

                          Also:

                          echo $QT_QPA_PLATFORM
                          

                          Thank you!

                          JoeCFDJ Offline
                          JoeCFDJ Offline
                          JoeCFD
                          wrote on last edited by
                          #12

                          @Robert-Hairgrove
                          x11
                          Lubuntu
                          LXQt
                          empty

                          1 Reply Last reply
                          0
                          • R Robert Hairgrove

                            Here is a screenshot with an active database in the app built with Qt 5.15, showing the "To do" list with different stages enabled and disabled:
                            platform_qt5_active.png

                            JonBJ Online
                            JonBJ Online
                            JonB
                            wrote on last edited by
                            #13

                            @Robert-Hairgrove
                            @SGaist understands this much better than I do, but is your picture #2 (no borders and Qt6.5) somehow "wayland"? Which might not have/do the effects of x11/xcb?

                            R 1 Reply Last reply
                            0
                            • JonBJ JonB

                              @Robert-Hairgrove
                              @SGaist understands this much better than I do, but is your picture #2 (no borders and Qt6.5) somehow "wayland"? Which might not have/do the effects of x11/xcb?

                              R Offline
                              R Offline
                              Robert Hairgrove
                              wrote on last edited by
                              #14

                              @JonB Yes, it is wayland if I do not set "-platform xcb" as a command line option.

                              1 Reply Last reply
                              0
                              • R Offline
                                R Offline
                                Robert Hairgrove
                                wrote on last edited by
                                #15

                                I forgot to add that the precise version of Qt I have is 6.5.3 which was installed automatically by the Qt Creator maintenance tool.

                                JoeCFDJ 1 Reply Last reply
                                0
                                • R Robert Hairgrove

                                  I forgot to add that the precise version of Qt I have is 6.5.3 which was installed automatically by the Qt Creator maintenance tool.

                                  JoeCFDJ Offline
                                  JoeCFDJ Offline
                                  JoeCFD
                                  wrote on last edited by JoeCFD
                                  #16

                                  @Robert-Hairgrove I guess the problem should be gone if you switch to X11. Do you have to use Wayland? Wayland is the default setting in Ubuntu 22.04.

                                  R 1 Reply Last reply
                                  0
                                  • JoeCFDJ JoeCFD

                                    @Robert-Hairgrove I guess the problem should be gone if you switch to X11. Do you have to use Wayland? Wayland is the default setting in Ubuntu 22.04.

                                    R Offline
                                    R Offline
                                    Robert Hairgrove
                                    wrote on last edited by
                                    #17

                                    @JoeCFD "X11" is not listed as an available platform argument (see my reply to @SGaist above).

                                    How would I do this, switch to X11?

                                    JoeCFDJ 1 Reply Last reply
                                    0
                                    • R Robert Hairgrove

                                      @JoeCFD "X11" is not listed as an available platform argument (see my reply to @SGaist above).

                                      How would I do this, switch to X11?

                                      JoeCFDJ Offline
                                      JoeCFDJ Offline
                                      JoeCFD
                                      wrote on last edited by JoeCFD
                                      #18

                                      @Robert-Hairgrove logout your account. You can see a settings icon on the login screen and click the setting icon to select Xorg. Then log in and you will be good.

                                      R 2 Replies Last reply
                                      0
                                      • JoeCFDJ JoeCFD

                                        @Robert-Hairgrove logout your account. You can see a settings icon on the login screen and click the setting icon to select Xorg. Then log in and you will be good.

                                        R Offline
                                        R Offline
                                        Robert Hairgrove
                                        wrote on last edited by
                                        #19

                                        @JoeCFD Thanks.

                                        I logged in again with XOrg, but unfortunately the problem persists.

                                        JoeCFDJ 1 Reply Last reply
                                        0
                                        • JoeCFDJ JoeCFD

                                          @Robert-Hairgrove logout your account. You can see a settings icon on the login screen and click the setting icon to select Xorg. Then log in and you will be good.

                                          R Offline
                                          R Offline
                                          Robert Hairgrove
                                          wrote on last edited by
                                          #20

                                          @JoeCFD BTW, what is "LXQt"?

                                          JoeCFDJ 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