QT程序在不同分辨率电脑上字体变大,溢出控件的解决方法
前言
最近开发过程中,发现在本地运行QT程序,显示界面是没有问题的,但是在其他电脑上出现过字体变大,溢出控件的现象。
- 本地运行显示正常,字体能够正常显示。
- 在其他电脑上运行,字体显示异常,大小改变,溢出控件。
原因
Qt中的字体Qfont定义字体大小是有两种方式,一种是PointSize,另一种是PixelSize。
- PointSize的单位不是像素,它是以字体在屏幕实际显示的大小为单位的,它和屏幕的分辨率以及屏幕的真实尺寸相关,即它的单位即为屏幕上显示的字体大小。
- PixelSize实际上是以像素为单位,即PixelSize的大小即为实际的像素大小。
开发过程中,QT默认使用的是PointSize的设置方法,所以在不同分辨率电脑下的会出现字体大小、控件位置异常的情况。
解决办法
1.main函数中设置全局字体
QFont font(QStringLiteral("Tahoma")); //设置一种字体
font.setPixelSize(12); //字体大小,等同于PointSize的9点大小
qApp->setFont(font);
2.QT Creator中加入样式表
-
在QT Creator的UI界面右击,选择“改变样式表”
-
单击“添加字体”
注意,这里的字体默认使用的是PointSize,需要改成PixelSize,把9pt改为12px即可。
效果
再次运行,界面显示恢复正常。