• Qt获取屏幕(桌面)的大小或分辨率


    Qt提供QDesktopWidget和QScreen两个类获取屏幕大小。Qt5开始,QDesktopWidget官方不建议使用,改为QScreen。Qt 6.0 及之后版本,QDesktopWidget 已从QtWidgets 模块中被彻底移除。

    QDesktopWidget

    QDesktopWidget 提供了详细的位置信息,其能够自动返回窗口在用户窗口的位置和应用程序窗口的位置。

    1. QDesktopWidget* pDesktopWidget = QApplication::desktop();
    2. //获取可用桌面大小
    3. QRect deskRect = QApplication::desktop()->availableGeometry();
    4. //获取主屏幕分辨率
    5. QRect screenRect = QApplication::desktop()->screenGeometry();
    6. //获取屏幕数量
    7. int nScreenCount = QApplication::desktop()->screenCount();

    QScreen 获取系统屏幕大小

    1. #include
    2. #include
    3. //单屏幕
    4. QScreen* screen = QGuiApplication::primaryScreen(); //获取主屏幕
    5. //多屏幕
    6. QList screenList = QGuiApplication::screens(); //多显示器
    7. QList rectList;
    8. for(int i = 0; i < screenList.size(); i++){
    9. rectList.append(screenList.at(i).geometry()); //分辨率大小
    10. }

    如果是多屏幕,其每个屏幕的rect是不一样的,起始坐标不同,第一个屏幕的起始坐标是(0, 0),第二个屏幕的起始坐标是(1920, 0) 

    1. /**
    2. * 设置窗体初始化位置及尺寸。
    3. */
    4. QScreen* screen = QApplication::primaryScreen();
    5. QRect rectangle = screen->geometry();
    6. int width = rectangle.width();
    7. int height = rectangle.height();
    8. setGeometry(width / 10, height / 10, width * 3 / 4, height * 4 / 5);

     geometry() 与 availableGeometry() 的区别

    1. QScreen* screen = QGuiApplication::primaryScreen();
    2. QRect rect1 = screen->geometry();
    3. qDebug() << "rect1" << rect1.size().width() << rect1.size().height();
    4. qDebug() << rect1.topLeft();
    5. qDebug() << rect1.bottomRight();
    6. QRect rect2 = screen->availableGeometry();
    7. qDebug() << "rect2" << rect2.size().width() << rect2.size().height();
    8. qDebug() << rect2.topLeft();
    9. qDebug() << rect2.bottomRight();
    • geometry()返回的是屏幕的大小,即屏幕分辨率大小,包括屏幕下方的工具栏(1090*1080)
    • availableGeometry()返回可用屏幕的大小,不包括屏幕下方的工具栏(1090*1040)
  • 相关阅读:
    content生成自定义图标的方式是什么?
    【设计模式之模板方法模式 -- C++】
    Docker中出现bash: vim: command not found解决方案
    第5章 dockerfile
    GPU训练yolov5问题
    [RK3568][Android11]内核Oops日志分析
    WSL+vscode配置miniob环境
    java 旋转方阵
    聊聊spring中bean的作用域
    Java接口自动化框架:maven编译警告解决之-Xlint:unchecked以及使用了未经检查或不安全的操作
  • 原文地址:https://blog.csdn.net/weiweiqiao/article/details/133336503