美文网首页
Qt4K高分屏自适应,解决字体没有跟随组件增大的问题

Qt4K高分屏自适应,解决字体没有跟随组件增大的问题

作者: VE视频引擎 | 来源:发表于2021-03-23 15:52 被阅读0次

解决背景

在一次做项目的过程中,公司让我做高分屏适配,就是让我们所开发的软件支持4K屏的显示,我在百度上开始搜索资料,有很多博客给出的答案就是:

#if(QT_VERSION >= QT_VERSION_CHECK(5,6,0))
        QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
        QApplication a(argc, argv);

 
 

解决过程

我也这样做了,结果,没错,Qt确实是把窗口以及组件的大小进行了屏幕自适应,但是组件内的字体大小却没有改变,所以显示出来的结果就是这个样子,如图:



 

解决方法

看上去是不是很不协调,很丑有没有,但是没办法,你如果非得让我给你解释原理的话,就是:原因是qt的dpi计算错误,这样的情况会导致qt在不同的平台上大小不一,解决的方法就是设置好qt的dpi,qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi的, 所以,咱们把Qt字体的PointSize重新设置,一次,就能解决这个问题。废话不说直接上代码:

#if(QT_VERSION >= QT_VERSION_CHECK(5,6,0))
        QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
        QApplication a(argc, argv);
        
        QFont font = a.font();
        font.setPointSize(10);//这个值根据自身情况自行调节,如果字体没变化,把setPointSize()内的值继续增大
        a.setFont(font); 

当你把setPointSize()内的值设置大了之后,你会发现,显示竟然正常了,如图:



 
 

最终代码

现在的话,字体大小就已经正常了,但是如果在1080P上面字体可能会更大,因为你现在是在4K屏,所以看上去是正常的,那咱们接下来应该怎么做,很简单,让setPointSize()的值根据系统自行调节,问题就解决了,废话不说,继续上代码:

#if(QT_VERSION >= QT_VERSION_CHECK(5,6,0))
        QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
        QApplication a(argc, argv);
        
        const float DEFAULT_DPI = 96.0;
        HDC screen = GetDC(NULL);
        FLOAT dpiX = static_cast<FLOAT>(GetDeviceCaps(screen, LOGPIXELSX));
        ReleaseDC(0, screen);
    float fontSize = dpiX / DEFAULT_DPI;
    
        QFont font = a.font();
        font.setPointSize(font.pointSize()*fontSize);
        a.setFont(font);

好了,这样的话,问题解决,这样自适应问题就解决掉了
注:这些操作都需在main主函数里面操作

相关文章

  • Qt4K高分屏自适应,解决字体没有跟随组件增大的问题

    解决背景 在一次做项目的过程中,公司让我做高分屏适配,就是让我们所开发的软件支持4K屏的显示,我在百度上开始搜索资...

  • 数据可视化自适应框架

    解决问题 设计稿字体大小不适用于网页呈现 背景图片、视频呈现偏移 栅格化自适应元素偏移 16:9自适应实现 适用范...

  • Vue组件宽高自适应问题

    在两个月前,我被公司安排做一个系统的前端页面开发,当时我还是个对前端知识一无所知的小白,html标签只知道 这些...

  • Mac下iterm神器使用笔记!

    mac自带终端也可分屏,但是没有iterm好用。 设置终端背景图片,字体颜色,命令提示,分屏等各种好用的插件。 官...

  • taro使用中的问题

    一. 多端踩过的那些技术坑 名称问题描述解决方案备注不支持自定义字体大小H5不支持字体换行taro 弹窗组件问题...

  • HTML学习之图片字体适配

    移动h5 图片字体等适配WebApp开发之--"rem"单位Rem实现自适应初体验手机端页面自适应解决方案—rem布局

  • 自定义RatingBar(自适应宽高)

    解决官方RatingBar无法自由调整宽高的问题可选则适应宽度或者高度 红色背景为自适应后的宽高 在values下...

  • 移动端自适应方案

    自适应需要从以下几个方面入手:布局、字体、retina带来的问题 一、布局: 1. 用%做单位老方案,兼容性高在制...

  • 2018-11-10

    解决小程序textarea的高度自适应问题

  • 论文笔记-Self-Supervised Learning Wi

    为了解决高光谱分类问题中带标签数据不足,数据标签采集困难的问题,本文提出了一种自适应Soft Label生成方法,...

网友评论

      本文标题:Qt4K高分屏自适应,解决字体没有跟随组件增大的问题

      本文链接:https://www.haomeiwen.com/subject/grpfhltx.html