当前位置:   article > 正文

Qt分辨率适配_qt 适配800 x1280的屏幕

qt 适配800 x1280的屏幕

在Main函数开头调用HighDpiAdapt()函数

#include "HighDpiAdapt.h"
#include <iostream>
#include <QGuiApplication>

#include <Windows.h>
#include <WinUser.h>
using namespace std;

//将wstring转换成string
string wstring2string(wstring wstr)
{
    string result;
    //获取缓冲区大小,并申请空间,缓冲区大小事按字节计算的
    int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL);
    char* buffer = new char[len + 1];
    //宽字节编码转换成多字节编码
    WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), buffer, len, NULL, NULL);
    buffer[len] = '\0';
    //删除缓冲区并返回值
    result.append(buffer);
    delete[] buffer;
    return result;
}

void HighDpiAdapt(){
    // 获取当前显示器的数目
    int numbers = GetSystemMetrics(SM_CMONITORS);
    string scale_name = "";
    for (int i = 0; i < numbers; ++i)
    {
        DISPLAY_DEVICEW device;
        device.cb = sizeof(device);
        BOOL result = EnumDisplayDevicesW(NULL, i, &device, 0);
        DEVMODEW device_mode;
        device_mode.dmSize = sizeof(device_mode);
        device_mode.dmDriverExtra = 0;
        result = EnumDisplaySettingsExW(device.DeviceName, ENUM_CURRENT_SETTINGS, &device_mode, 0);
        string screen_name = wstring2string(device.DeviceName);
        scale_name += screen_name;
        scale_name += (device_mode.dmPelsWidth > 1920) ? "=1.5;" : "=1;";  //设置不同的缩放比例系数
    }
    scale_name[scale_name.size() - 1] = '\0';
    qputenv("QT_SCREEN_SCALE_FACTORS", scale_name.c_str());
    //处理图像模糊问题
    QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
    //禁止高缩放支持
    //QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);   //AA_EnableHighDpiScaling
    //程序保持默认的尺寸,不缩放
    QGuiApplication::setAttribute(Qt::AA_Use96Dpi);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/94919
推荐阅读
相关标签
  

闽ICP备14008679号