• 了解Qt QScreen的geometry ,size


    目的

    了解qt 对于屏幕的size, geometry含义, 更能有效实现最大化, 向下还原逻辑操作

    Test

    目前我有两个屏 ,1920x1080, 3840*2160.
    检测当前程序所在screen(1920x1080)下属性

    int screenNum =  qApp->desktop()->screenNumber(this);
        if(screenNum >= 0){
            QScreen* screen = qApp->screens().at(screenNum);
            qInfo() << "screen devicePixelRatio: " << screen->devicePixelRatio() << "screen logicalDotsPerInch: " << screen->logicalDotsPerInch() << "screen physicalDotsPerInch: " << screen->physicalDotsPerInch()
                    << "screen physicalSize: " << screen->physicalSize() << "screen availableSize: " << screen->availableSize() << "screen availableVirtualSize: " << screen->availableVirtualSize() << "screen size: " << screen->size()
                    << "screen availableGeometry: " << screen->availableGeometry() << "screen availableVirtualGeometry: " << screen->availableVirtualGeometry()
                    << "screen virtualGeometry: " << screen->virtualGeometry() << "screen geometry: " << screen->geometry() << screen->geometry().size();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    打印结果

    screen devicePixelRatio: 1 screen logicalDotsPerInch: 96 screen physicalDotsPerInch: 92.6073 screen physicalSize: QSizeF(527, 296) screen availableSize: QSize(1920, 1040) screen availableVirtualSize: QSize(5760, 2080) screen size: QSize(1920, 1080) screen availableGeometry: QRect(0,0 1920x1040) screen availableVirtualGeometry: QRect(-3840,-515 5760x2080) screen virtualGeometry: QRect(-3840,-515 5760x2160) screen geometry: QRect(0,0 1920x1080) QSize(1920, 1080)

    移除任务栏后:

    screen devicePixelRatio: 1 screen logicalDotsPerInch: 96 screen physicalDotsPerInch: 92.6073 screen physicalSize: QSizeF(527, 296) screen availableSize: QSize(1920, 1080) screen availableVirtualSize: QSize(5760, 2160) screen size: QSize(1920, 1080) screen availableGeometry: QRect(0,0 1920x1080) screen availableVirtualGeometry: QRect(-3840,-515 5760x2160) screen virtualGeometry: QRect(-3840,-515 5760x2160) screen geometry: QRect(0,0 1920x1080) QSize(1920, 1080)

    结果你会发现 screen availableSize: 高度增加了40px。screen availableGeometry: QRect(0,0 1920x1040) 也是。而实际的screen geometry: QRect(0,0 1920x1080) QSize(1920, 1080), 与物理size没有改变。只有充分知道QScreen相关属性, 才能更好写出多屏下相关处理操作。

  • 相关阅读:
    go笔记之——goroutine
    第17章 - 垃圾回收器
    Cookie、代理服务器
    Python生成器
    聊天功能演示系统发布后出现有些页面滚动与鼠标点击问题解决
    Docker 搭建Redis 集群之路
    Nginx——安装和反向代理
    electron-vue 项目启动动态获取配置文件中的后端服务地址
    axios请求响应拦截器的应用
    【Python】将Python中的多维列表进行展开
  • 原文地址:https://blog.csdn.net/liunanya/article/details/133901105