解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题

原创 2017年06月05日 09:59:14

使用qlabel给Qwidget做标题,在分辨率为1920*1080的笔记本显示器上看到label标题在窗口中居中,换了一台分辨率也是1920*1080但更宽和更大的台式机显示器后,此label上的标题在窗口中变得偏左且字体看起来小。同样的显示器不同宽度的屏幕字体大小显示不一样造成标题没有居中。因字体和内容都是在qt设计师上设定的,qt设计师设定的字体是根据point(磅)大小来显示而不是像素大小显示,即获取字体大小的函数是PointSize(),而不是Pixsize()。网上说根据像素大小显示的字体在相同分辨率下显示行为是一样,但是根据point大小显示的字体, 规定了实际中我们肉眼看到的字体的大小 他和pixel无关的~ 他和显示器无关  不管在什么样上的显示器上 规定大小是多少就是多少。因此如果要使字体与显示器相关,则必须将字体改为按像素大小设置。根据此处计算方法,http://blog.csdn.net/liuqz2009/article/details/7208931

先获取pointsize大小,再转换为像素大小。

int pointsize = m_font.pointSize();
m_font.setPixelSize(pointsize*90/72); //设置字体大小单位为像素大小,而不是以磅为单位


如何决定字体是按pointsize大小还是按pixsize大小?

函数PointSize()的返回值为如果字体是以SetPointSize()设置的,则返回具体的pointsize,否则返回-1. pixsize也是如此,因此判断下是否返回-1即可知道是哪个方式设置。


改了像素大小后,标题依然没有居中。后面各种方法尝试都不行。后面突然想到一法,将label的宽度设置为与窗口大小一样的宽度,再设置label的内容为居中setAlignment(Qt::AlignHCenter),如此则放到不同的显示器,能够自动适应窗口大小。至此解决了标题不居中问题。特此记录一下。

Qt 字体大小的计算

在QFont当中有两种方式设置字体大小,一种是PixelSize,另一种是PointSize Point实际是磅,也就是 1/72 inch 我们可以从PainterDevice中得到当前DPI(...
  • Liuqz2009
  • Liuqz2009
  • 2012年01月18日 13:13
  • 12342

Qt 字体大小的计算

在QFont当中有两种方式设置字体大小,一种是PixelSize,另一种是PointSize Point实际是磅,也就是 1/72 inch 我们可以从PainterDevice中得到当前DPI(Do...
  • yangjie1987636
  • yangjie1987636
  • 2017年03月15日 16:19
  • 608

Qt获取多显示器屏幕分辨率

本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接:Qt获取多显示器屏幕分辨率 在Wi...
  • cuteqt
  • cuteqt
  • 2010年10月13日 22:02
  • 3000

多显示器编程--获取所有显示器的分辨率

最近需要在windows下进行多显示器编程,问题是:怎么样获取所有的显示器的分辨率(比如:有三个显示器M1、M2、M3,如何分别取得它们三个的分辨率) 下面是一些网友讨论的记录: ...
  • u012330231
  • u012330231
  • 2016年02月25日 08:49
  • 1385

QT应用程序分辨率自适应

QT应用程序分辨率自适应一、应用程序分辨率自适应    为了满足应用程序能在不同尺寸及分辨率的屏幕下能够正常的运行显示,就需要对不同的分辨率进行自适应,而且应用程序分辨率自适应的问题在应用UI设计布局...
  • matengxiao
  • matengxiao
  • 2016年10月18日 21:57
  • 6700

QT控件自适应缩放以及自适应系统字体与分辨率

研究了一天,在网上查了好多关于QT控件如何自适应系统字体的方法,后来在一本Linux环境下QT4图形界面与MySQL编程书中查到,通过布局管理器可以实现窗口尺寸改变时自动调整控件。 QT布局管理器有...
  • heyang408856755
  • heyang408856755
  • 2015年05月06日 09:32
  • 3519

关于获取多个屏幕分辨率以及进行一些设置

Windows下提示显示器信息主要通过两个函数实现。一个是EnumDisplayDevices(), 另一个是EnumDisplayMonitors(). EnumDisplayDevices()枚举...
  • swartz_lubel
  • swartz_lubel
  • 2017年02月04日 23:13
  • 1399

获取显示屏的个数和分辨率

获取当前显示屏分辨率 获取显示屏个数 获取屏幕的总分辨率 获取各个屏幕的分辨率...
  • github_35160620
  • github_35160620
  • 2016年07月05日 02:19
  • 18364

关于qt, 系统分辨率自适应

关于qt, 系统分辨率自适应在,Qt 界面运行起来后, 更改系统分辨率, Qt的窗体,不会自动适应,调整自身大小. 可以通过如下方法解决,此问题.查看Qt帮助文档, QDesktopWidget 类...
  • jxm_csdn
  • jxm_csdn
  • 2016年11月11日 00:31
  • 1191

Qt之窗体拖拽、自适应分辨率、自适应大小

简述在自定义无边框、标题栏的界面中,需要自己实现最小化、最大化、关闭、窗体背景等功能。最小化、最大化、关闭等按钮设计及功能比较简单,这里就不多做介绍。今天主要介绍一下绘制背景的问题,主要实现自适应屏幕...
  • u011012932
  • u011012932
  • 2016年07月05日 18:52
  • 8033
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决qt在相同分辨率不同宽度的屏幕下字体显示位置不一样的问题
举报原因:
原因补充:

(最多只允许输入30个字)