为什么在ARM板上qt字体会变小?

文章讲述了在QT在ARM板上计算DPI值有误的问题,提供了解决方案,包括针对QT5以下和QT5的环境变量设置方法。DPI是每英寸像素点数,影响字体和图形的显示大小。文章还讨论了如何通过设置QFont的PixelSize和PointSize来调整字体大小,并解释了分辨率和DPI对屏幕显示的影响。
摘要由CSDN通过智能技术生成

因为QT在ARM板上计算DPI值错误。

解决的方法就是设置好qt的dpi。

qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi的。
对于QT5以下的版本设置如下:

export QWS_DISPLAY="LinuxFB:mmWidth95:0" 
    export QWS_SIZE="480x272"

对于QT5:

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=480x272:mmsize=95x53:offset=0x0
    size指定屏幕分辨率,mmsize指定屏幕物理尺寸。offset指定偏移量。
这样qt在所有的平台上显示的字体都一样大了 就好了。

什么是DPI值呢?每英寸的像素点数,即单位点/英寸。网络上有好多写ppi与dpi区别的帖子,没大看懂,也无关紧要。我的显示屏的分辨率即(设备分辨率)是800*600;水平分辨率是800,垂直分辨率是600,显示器物理宽度16cm,物理高度12cm,

则由式:

将qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi的。dpi的计算如下:

水平 dpi = 水平 resolution /(显示器宽度cm/2.54 )

垂直 dpi = 垂直 resolution /(显示器高度cm/2.54 )
1英寸=2.54cm,可知,我的水平DPI和垂直DPI都是127.

在QFont当中有两种方式设置字体大小,一种是PixelSize,另一种是PointSize
Point实际是磅,也就是 1/72 inch

我们可以从QPaintDevice中得到当前DPI(Dot per inch)。因此 Pixel = DPI * Point / 72
例如设置字体为20Point。 那么字体的像素大小是 90 * 20 / 72 约等于 25.而DPI=120时,同样20point,像素增大,字体变大。可以将字体设置为25Pixel,看到字体的大小就是20Point和25Pixel大小是一样的。
所以在同一显示屏下,屏幕大小就固定了,其显示能力也固定了,也就是说显示器横向、纵向能够显示的像素点是有上限的,如果显示器的最佳显示分辨率为1440×900,那么该显示器横向上最多也就1440个像素点,再高就不行了!是硬件限制。纵向上也是如此。也就是从硬件上讲(或者说是物理上),显示器的物理DPI出厂后就确定了!包含两个固定值:

1)屏幕尺寸,如14.1英寸

2)分辨率上限,如1440×900

所以,每像素的尺寸(1Pixel=?Inch)是个常量(屏幕上一定范围的区域)。因而,设置的DPI值越大,字体越大。
而你设置的屏幕分辨率(横、纵方向像素个数)越高,则能看到的东西越多,但是东西看起来越小(高分辨率相当于用圆珠笔画画,笔画细;低分辨率相当于用毛笔画画,笔画粗!)

QFont当中设置的大小,实际上字体的高度,由如下组成。
pixel pitch(点距): 像素点间距离。可以用25.4mm / DPI得到。
字体在屏幕上的实际大小 = 字体像素大小 * 点距=(显示屏DPI*Point/72)*(25.4/设置DPI)
因此如果想要看到更大的字体可以使用更大的点距。 有些显示器的设置分辨率(dpi)比较大,那么单位长度中的像素点就比较多,这样一个字所占的长度就会比较少。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值