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. QApplication::desktop()->screenGeometry() not work in qt6
QtWS25 Last Chance

QApplication::desktop()->screenGeometry() not work in qt6

Scheduled Pinned Locked Moved Solved General and Desktop
qt6.2qapplicationsize
8 Posts 6 Posters 7.6k 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.
  • T Offline
    T Offline
    timob256
    wrote on 23 Feb 2022, 09:21 last edited by
    #1

    I'm trying to find out the screen size.

    Previously, I recognized with one command, but now it does not work.

     QRect size = QApplication::desktop()->screenGeometry();  
     this->resize(size.width() * 0.25, size.height() * 0.25);
    

    but QApplication::desktop() not work this now ;_:

    i traing using

    QSize size = screen->availableSize();
    this->resize(size.width() * 0.25, size.height() * 0.25);
    

    but this hot work

    How to find out the screen size now ???

    J 1 Reply Last reply 23 Feb 2022, 09:23
    0
    • A Offline
      A Offline
      A.A.SEZEN
      wrote on 23 Feb 2022, 09:56 last edited by
      #3

      try this

      QGuiApplication::primaryScreen()->geometry()
      
      1 Reply Last reply
      1
      • T timob256
        23 Feb 2022, 09:21

        I'm trying to find out the screen size.

        Previously, I recognized with one command, but now it does not work.

         QRect size = QApplication::desktop()->screenGeometry();  
         this->resize(size.width() * 0.25, size.height() * 0.25);
        

        but QApplication::desktop() not work this now ;_:

        i traing using

        QSize size = screen->availableSize();
        this->resize(size.width() * 0.25, size.height() * 0.25);
        

        but this hot work

        How to find out the screen size now ???

        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 23 Feb 2022, 09:23 last edited by
        #2

        @timob256 said in QApplication::desktop()->screenGeometry() not work in qt6:

        size

        What is its value?

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • A Offline
          A Offline
          A.A.SEZEN
          wrote on 23 Feb 2022, 09:56 last edited by
          #3

          try this

          QGuiApplication::primaryScreen()->geometry()
          
          1 Reply Last reply
          1
          • T Offline
            T Offline
            timob256
            wrote on 23 Feb 2022, 10:34 last edited by
            #4

            @jsulm

            #include "mainwindow.h"
            
            mainwindow::mainwindow(QWidget *parent)
                : QWidget{parent}
                , wgt (new wgt_screen(this))
            {
                QSize size1 = screen->availableSize();   // error
                this->resize(size1.width() * 0.25, size1.height() * 0.25);
            
            
              QRect size = QApplication::desktop()->screenGeometry();  // error
                this->resize(size.width() * 0.25, size.height() * 0.25);
            
                gridlayout = new QGridLayout(parent);
                gridlayout->addWidget(wgt);
            
                this->setLayout(gridlayout);
            }
            

            CMakeList.txt

            cmake_minimum_required(VERSION 3.5)
            
            project(wgt_screen_turbo VERSION 0.1 LANGUAGES CXX)
            
            set(CMAKE_INCLUDE_CURRENT_DIR ON)
            
            set(CMAKE_AUTOUIC ON)
            set(CMAKE_AUTOMOC ON)
            set(CMAKE_AUTORCC ON)
            
            set(CMAKE_CXX_STANDARD 11)
            set(CMAKE_CXX_STANDARD_REQUIRED ON)
            
            find_package(Qt6 COMPONENTS Widgets REQUIRED)
            find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
            find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
            
            set(PROJECT_SOURCES
            #        main.cpp
            #        wgt_screen.cpp
            #        wgt_screen.h
            examples/main.cpp
            examples/mainwindow.h
            examples/mainwindow.cpp
            src/wgt_screen.cpp
            src/wgt_screen.h
            )
            
            if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
                qt_add_executable(wgt_screen_turbo
                    MANUAL_FINALIZATION
                    ${PROJECT_SOURCES}
                )
            # Define target properties for Android with Qt 6 as:
            #    set_property(TARGET wgt_screen_turbo APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
            #                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
            # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
            else()
                if(ANDROID)
                    add_library(wgt_screen_turbo SHARED
                        ${PROJECT_SOURCES}
                    )
            # Define properties for Android with Qt 5 after find_package() calls as:
            #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
                else()
                    add_executable(wgt_screen_turbo
                        ${PROJECT_SOURCES}
                    )
                endif()
            endif()
            
            target_link_libraries(wgt_screen_turbo PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
            target_link_libraries(wgt_screen_turbo PRIVATE Qt6::Widgets)
            
            set_target_properties(wgt_screen_turbo PROPERTIES
                MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
                MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
                MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
            )
            
            if(QT_VERSION_MAJOR EQUAL 6)
                qt_finalize_executable(wgt_screen_turbo)
            endif()
            
            J 1 Reply Last reply 23 Feb 2022, 10:40
            0
            • T timob256
              23 Feb 2022, 10:34

              @jsulm

              #include "mainwindow.h"
              
              mainwindow::mainwindow(QWidget *parent)
                  : QWidget{parent}
                  , wgt (new wgt_screen(this))
              {
                  QSize size1 = screen->availableSize();   // error
                  this->resize(size1.width() * 0.25, size1.height() * 0.25);
              
              
                QRect size = QApplication::desktop()->screenGeometry();  // error
                  this->resize(size.width() * 0.25, size.height() * 0.25);
              
                  gridlayout = new QGridLayout(parent);
                  gridlayout->addWidget(wgt);
              
                  this->setLayout(gridlayout);
              }
              

              CMakeList.txt

              cmake_minimum_required(VERSION 3.5)
              
              project(wgt_screen_turbo VERSION 0.1 LANGUAGES CXX)
              
              set(CMAKE_INCLUDE_CURRENT_DIR ON)
              
              set(CMAKE_AUTOUIC ON)
              set(CMAKE_AUTOMOC ON)
              set(CMAKE_AUTORCC ON)
              
              set(CMAKE_CXX_STANDARD 11)
              set(CMAKE_CXX_STANDARD_REQUIRED ON)
              
              find_package(Qt6 COMPONENTS Widgets REQUIRED)
              find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
              find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
              
              set(PROJECT_SOURCES
              #        main.cpp
              #        wgt_screen.cpp
              #        wgt_screen.h
              examples/main.cpp
              examples/mainwindow.h
              examples/mainwindow.cpp
              src/wgt_screen.cpp
              src/wgt_screen.h
              )
              
              if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
                  qt_add_executable(wgt_screen_turbo
                      MANUAL_FINALIZATION
                      ${PROJECT_SOURCES}
                  )
              # Define target properties for Android with Qt 6 as:
              #    set_property(TARGET wgt_screen_turbo APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
              #                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
              # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
              else()
                  if(ANDROID)
                      add_library(wgt_screen_turbo SHARED
                          ${PROJECT_SOURCES}
                      )
              # Define properties for Android with Qt 5 after find_package() calls as:
              #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
                  else()
                      add_executable(wgt_screen_turbo
                          ${PROJECT_SOURCES}
                      )
                  endif()
              endif()
              
              target_link_libraries(wgt_screen_turbo PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
              target_link_libraries(wgt_screen_turbo PRIVATE Qt6::Widgets)
              
              set_target_properties(wgt_screen_turbo PROPERTIES
                  MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
                  MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
                  MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
              )
              
              if(QT_VERSION_MAJOR EQUAL 6)
                  qt_finalize_executable(wgt_screen_turbo)
              endif()
              
              J Offline
              J Offline
              jsulm
              Lifetime Qt Champion
              wrote on 23 Feb 2022, 10:40 last edited by
              #5

              @timob256 said in QApplication::desktop()->screenGeometry() not work in qt6:

              // error

              What error?

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              Christian EhrlicherC 1 Reply Last reply 23 Feb 2022, 10:45
              0
              • J jsulm
                23 Feb 2022, 10:40

                @timob256 said in QApplication::desktop()->screenGeometry() not work in qt6:

                // error

                What error?

                Christian EhrlicherC Offline
                Christian EhrlicherC Offline
                Christian Ehrlicher
                Lifetime Qt Champion
                wrote on 23 Feb 2022, 10:45 last edited by
                #6

                @jsulm said in QApplication::desktop()->screenGeometry() not work in qt6:

                What error?

                You have to know this ! I mean - is your crystal ball not working today?

                Educated guess: If you want to use QDesktopWidget you should insert the header where the class is defined - basic C

                Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                Visit the Qt Academy at https://academy.qt.io/catalog

                1 Reply Last reply
                2
                • G Offline
                  G Offline
                  geodoomgr
                  wrote on 6 Dec 2023, 17:33 last edited by
                  #7

                  I had a similar problem, as I was trying to build the small project of
                  https://github.com/LAmmeraal/sourceCode/blob/master/changeline.cpp
                  in Qt6 , I could see the error, and in the end what I did is substituting the line:

                  //QRect rec = QApplication::desktop()->screenGeometry();  // for Qt5
                  QRect rec = QApplication::primaryScreen()->geometry();  // Qt6 , along with the #include <QScreen> at the top
                  
                  R 1 Reply Last reply 31 May 2024, 10:42
                  1
                  • G geodoomgr
                    6 Dec 2023, 17:33

                    I had a similar problem, as I was trying to build the small project of
                    https://github.com/LAmmeraal/sourceCode/blob/master/changeline.cpp
                    in Qt6 , I could see the error, and in the end what I did is substituting the line:

                    //QRect rec = QApplication::desktop()->screenGeometry();  // for Qt5
                    QRect rec = QApplication::primaryScreen()->geometry();  // Qt6 , along with the #include <QScreen> at the top
                    
                    R Offline
                    R Offline
                    RaKa
                    wrote on 31 May 2024, 10:42 last edited by
                    #8

                    @geodoomgr: your tip helped, now works great on QT 6.6.3 thanks

                    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