使用QT在开发桌面程序的时候,很多时候需要涉及到高分屏的适配问题。如果之前没有做过高分屏适配可能会遇到很多问题,这里提供一套方便的QT高分屏适配方案供大家参考。在适配高分屏的时候需要考虑两个要求:

1.同一屏幕百分比缩放的适配

2.多个屏幕组合的时候自动适配

如果是只有一个屏幕的话,windows是支持百分比缩放的,如果缩放百分比对应的应用也应该进行缩放。windows的缩放设置如下:

如果有多个屏幕,可能会是高分屏和低分屏的组合,这时候如果拖动应用会要求应用自动识别屏幕的分辨率进行适配。

针对上面两个要求,可以采用下面的方案进行高分屏适配。但此方案也有局限性

1.此方案只针对windows生效,Linux不可以

2.要求Qt版本是5.6以上

方案如下:

首先需要在pro文件中添加两个windows库

LIBS += User32.Lib
LIBS += gdi32.lib

其次在程序入口里面添加如下设置:

#include "mainwindow.h"
#include <QApplication>
#include <QMessageBox>
#include <QDir>
#include <Windows.h>
#include <WinUser.h>
#include <wingdi.h>#pragma execution_character_set("utf-8")int main(int argc, char *argv[])
{double dScaleFactor = 1.0;//应用开启DPI感知SetProcessDPIAware();//计算当前屏幕的DPIHDC desktopDc = GetDC(NULL);float horizontal_dpi = GetDeviceCaps(desktopDc, LOGPIXELSX);float vrtical_dpi = GetDeviceCaps(desktopDc, LOGPIXELSY);int hv_dpi = (horizontal_dpi+vrtical_dpi)/2;//计算DPI的缩放系数设置全局的QT缩放系数dScaleFactor = static_cast<double>(hv_dpi)/96.0;qputenv("QT_SCALE_FACTOR", QString::number(dScaleFactor).toUtf8());QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

这个方案的本质就是通过设置程序的DPI感知,动态获取屏幕的DPI缩放系数从而实现动态的缩放程序窗口。由于设置相对比较简单,功能强大,算是一个性价比比较高的方案。

QT自动适配高分屏的解决方案相关推荐

  1. duilib适配高分屏(高DPI适配)

    duilib适配高分屏 高分屏(高DPI)适配 适配原理(duilib) 适配例子 高分屏(高DPI)适配 随着PC设备高分屏的越来越普及,PC端客户端软件也需要适配一下高分屏幕.在没有专门适配高分屏 ...

  2. HMI-7-[高分屏支持]:Qt 适配高分屏

    基于Qt的汽车仪表模拟 照例,还是先上效果图,宣传哈哈哈哈哈 今天学到一个新东西,就是Qt对高分屏的支持,即高DPI的支持,有个Qt写的软件在老板的SB2上运行出现了显示异常,因为老板的电脑分辨率是3 ...

  3. PyQt5适配高分屏的方法

    1.高分屏带来的显示问题 高分屏指的是显示屏的单位面积像素较高的屏幕,最后换了一个thinkbook笔记本,屏幕的dpi为144,原来的写的pycom串口助手(https://blog.csdn.ne ...

  4. 4:Qt Ui遇到高分屏字体显示问题

    目前高分屏越来越多,什么4k 8k牛逼死了,在高分屏下部分字体可能显示不正常,会出现显示不全的问题 在用Qt做UI的时候 注意,文字标签大小扩展策略不要用 Fixed 高分屏下字体显示不全,部分原因就 ...

  5. C++ Qt 高分屏处理心得

    C++ Qt 高分屏处理心得 首先自我介绍一下, 本人从事c++ qt方向的画面开发,工作内容主要是im pc端相关,接下来和大家分享一些经验之谈,希望可以帮助到有需要的同学. 今天为大家分享的是C+ ...

  6. ubuntu20.04使用微信,附高分屏适配方法

    ubuntu20.04使用微信 在知乎上看到一种比较好的在Ubuntu上使用微信的方法,使用的是优麒麟封装的wine. 作者:古德曼汽车工业 链接:https://zhuanlan.zhihu.com ...

  7. VirtualBox在Windows 10 高分屏下显示的修正以及显示字体的修改

    给自己的笔记本外接了大屏显示屏以后,就会时不时在笔记本和屏幕之间拖动,VirtualBox没有适配高分屏,加上给屏幕设置了不同的缩放比(笔记本100%和大屏150%).VirtualBox就显得格外的 ...

  8. 简单解决高分屏模糊问题

    现在买到的电脑多是高分屏电脑,但很多软件都是不适配高分屏的,因而软件界面会变得相当模糊,解决方法如下: 捕获.PNG 右键点击显示设置: 调整大小.PNG 调整软件大小为100%:(原为125%,显然 ...

  9. linux 输入法 高分屏,支持高分屏 提升生僻字准确率 搜狗五笔输入法重大更新

    原标题:支持高分屏 提升生僻字准确率 搜狗五笔输入法重大更新 对于习惯使用拼音输入法的大多数用户来讲,五笔输入是需要强制记忆字根,通过练习才能掌握的输入法,它显得有些过时.甚至不少输入法厂商已经放弃了 ...

最新文章

  1. 【源资讯 第37期】一个时代的终结 —— 再见, Flash !
  2. qt mysql 注册码_QT连接Oracle数据库并实现登录验证的操作步骤
  3. 第三章计算机试题,计算机等级考试二级VB测试题(第三章)
  4. angularjs控制器之间的数据共享与通信
  5. notepad php源码,GitHub - CharlesKiki/Web-Notepad: 这是一个仿制有道云笔记的原生PHP小玩具。...
  6. thrift介绍及应用(四)—hadoop的thrift接口
  7. Linux命令每五分钟执行一次,Linux crontab 每5秒钟执行一次 shell 脚本 的方法
  8. 【Redis】redis数据类型及应用场景
  9. expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令...
  10. 网络安全世界の迷惑认知图鉴
  11. 深度学习 --- 优化入门三(梯度消失和激活函数ReLU)
  12. C语言分支循环结构1,c语言——运算符、分支结构、循环结构(示例代码)
  13. vijos 1002
  14. SAS的安装过程和遇到的问题(提供安装包)
  15. Html和css算是编程语言吗,不被承认的编程语言
  16. ASP页面中文乱码,已解决!!
  17. poj 3268 Silver Cow Party(最短路dijkstra)
  18. 冬瓜哥送你元宵大礼盒啦!!
  19. c语言程序设计上海理工,2017年上海理工大学医疗器械与食品学院854C程序设计考研题库...
  20. 什么是双亲委派机制?

热门文章

  1. 客户端与服务器的数据传输
  2. Java:String转char数组
  3. 无法启动此程序,因为计算机中丢失 api-ms-win-crt-stdio-l1-1-0.dll
  4. RK方案OTG口 OTG与HOST切换
  5. 打造自己的MVC框架
  6. # 我的家乡--永平风景
  7. 【转载】设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识
  8. 用python-rtmidi捕获MIDI键盘的输入,并回放MIDI消息
  9. c语言%hx输出大写,C语言输出函数printf
  10. 视频教程-Oracle12数据库管理/DBA/数据库工程师培训-Oracle