You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:02:35