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就可以得到正确的值