Qt5.6及以后版本支持高分辨率很容易,在QApplication创建之前加入如下代码:

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

打开这个设置之后在高分辨率的电脑上注意:

  • 不要混用获取尺寸位置相关的windows API,否则你会发现GetWindowRect获取的窗口宽高和使用QWidget函数width(),height()得到的值是不一样的;
  • 如我在程序中使用到了nativeEvent,从MSG中得到x,y坐标也不是我想要的;

    目前我的解决办法的是:通过widet->devicePixelRatioF()得到在高分辨显示器上的缩放比ratio,然后MSG中的x,y坐标除以ratio就可以得到正确的值