Qt无法加载.qrc指定字体:Qt6.11异常、Qt6.9正常
Qt资源文件中字体已被识别但无法加载的问题
Qt可在.qrc文件中找到指定字体,且字体已被成功添加到QFontDatabase,但创建QFont对象后,实际加载的却是系统默认字体。
相关代码与配置
MainWindow.cpp
#include "mainwindow.h" #include <QFontDatabase> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { qDebug() << "DB count before adding=" << QFontDatabase::families().count(); int fontId = QFontDatabase::addApplicationFont(":/OldaniaADFStd-Regular.otf"); QString fontFamily = QFontDatabase::applicationFontFamilies(fontId).at(0); QFont font(fontFamily); qDebug() << "DB count after adding=" << QFontDatabase::families().count(); qDebug() << "families=" << QFontDatabase::applicationFontFamilies(fontId); qDebug() << "fontId=" << fontId; qDebug() << "font family at families["<< fontId << "]= "<< fontFamily; qDebug() << "font family loaded=" << QFontInfo(font).family(); } MainWindow::~MainWindow() = default;
fontTest.qrc
<RCC> <qresource prefix="/"> <file>OldaniaADFStd-Regular.otf</file> </qresource> </RCC>
CMakeLists.txt
#added this line at the top in order to pick up the qrc file set(CMAKE_AUTORCC ON)
运行输出
DB count before adding= 177 DB count after adding= 178 families= QList("Oldania ADF Std") fontId= 0 font family at families[ 0 ]= "Oldania ADF Std" font family loaded= "Noto Sans"
补充说明
- main.cpp与mainwindow.h为IDE默认生成内容,未做修改
- CMakeLists.txt仅添加了上述
set(CMAKE_AUTORCC ON)一行 - 使用的是免费字体Oldania ADF Std
- 环境差异:在openSUSE Tumbleweed+Qt6.11环境下出现问题,openSUSE Leap+Qt6.9环境下代码可正常运行,两台设备均未安装该字体
- 已尝试的解决方法:完全重建项目、调用
QFontDatabase::font方法、检查Qt Creator全局设置,均无效
现寻求该问题的原因及可行解决方案。
内容的提问来源于stack exchange,提问作者Spaceman Dan
相关产品推荐
相关产品推荐

