BeagleBone Black平台qtwidgets应用大字体显示异常问题咨询
问题解决方案
1. 验证Qt字体数据库加载状态
目标板上Qt内置的字体数据库可能未正确识别已存在的字体文件,先通过调试参数确认字体识别情况:
- 启动应用时添加字体调试参数,打印Qt识别的所有字体列表:
QT_DEBUG_FONTS=1 ./你的应用程序名 - 若输出中没有你使用的字体,执行以下修复操作:
- 确认
/usr/share/fonts/ttf目录权限为755,目录下的字体文件权限为644 - 在应用启动脚本或者目标板
/etc/profile中添加环境变量,强制指定Qt字体搜索路径:export QT_QPA_FONTDIR=/usr/share/fonts/ttf
- 确认
2. 修复DPI适配异常
TI SDK自带的Qt演示应用默认配置了正确的DPI参数,自行交叉编译的应用未携带该配置会导致字体度量计算错误,可通过两种方式修复:
- 启动应用时追加平台DPI参数:
./你的应用程序名 -platform eglfs --dpi 96,可根据屏幕实际参数将96替换为72~120区间的对应数值;如果使用Wayland平台,改为添加环境变量export QT_WAYLAND_FORCE_DPI=96 - 在应用代码的
main函数、QApplication初始化之前添加固定DPI配置:qputenv("QT_FONT_DPI", "96");
3. 验证主从机Qt版本一致性
主机交叉编译用的Qt版本和目标板文件系统内置的Qt版本不一致时,会出现字体计算逻辑不匹配的问题:
- 主机端执行
${交叉编译Qt工具链路径}/bin/qmake -v查看版本 - 目标板执行
qmake -v或者ls /usr/lib/libQt5Core.so*查看版本号,确保两者大版本、小版本号完全匹配,版本不匹配时更换同版本的交叉编译Qt库即可
4. 调整高DPI缩放配置
Qt 5.6及以上版本默认开启的高DPI缩放逻辑在嵌入式屏上容易触发字体大小异常,可在main函数QApplication初始化前添加配置禁用缩放:
QCoreApplication::setAttribute(Qt::AA_DisableHighDpiScaling);
如果需要保留缩放能力,可在初始化后强制设置全局字体大小:
QFont globalFont = qApp->font(); globalFont.setPointSize(你预设的按钮字体大小); qApp->setFont(globalFont);
内容的提问来源于stack exchange,提问作者jgnoss
相关产品推荐
相关产品推荐

