QApplication::desktop()->screenGeometry() not work in qt6
-
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 ???
-
@timob256 said in QApplication::desktop()->screenGeometry() not work in qt6:
size
What is its value?
-
#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()
-
-
@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
-
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