QT不同分辨率适配问题

QT不同分辨率适配问题

由于windows存在缩放比例 ,导致若不采用缩放因子会导致高分辨率下界面过小,采用的是win32api做的适配 废话不多说 上代码

 

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling );
    QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);

    // 获取窗口当前显示的监视器

    HWND hWnd = GetDesktopWindow();//根据需要可以替换成自己程序的句柄

    HMONITOR hMonitor = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);

    // 获取监视器逻辑宽度与高度

    MONITORINFOEX miex;

    miex.cbSize = sizeof(miex);

    GetMonitorInfo(hMonitor, &miex);

    int cxLogical = (miex.rcMonitor.right - miex.rcMonitor.left);

    // 获取监视器物理宽度与高度

    DEVMODE dm;

    dm.dmSize = sizeof(dm);

    dm.dmDriverExtra = 0;

    EnumDisplaySettings(miex.szDevice, ENUM_CURRENT_SETTINGS, &dm);

    int cxPhysical = dm.dmPelsWidth;

    //缩放比例计算

    double horzScale = ((double)cxPhysical / (double)cxLogical);

    qreal  cx = GetSystemMetrics(SM_CXSCREEN);

    if(cx < 1360){

        return 0;

    }

    qreal scale ;

    if(horzScale == 1){//若缩放比例为1 则直接除分辨率

        scale = cx / cxPhysical ;

    }else{

        scale = cx / 1920 ;

    }

     qputenv("QT_SCALE_FACTOR",  QString::number(scale).toLatin1( ) );

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蝈蝈(GuoGuo)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值