QFontDatabase: Cannot find font directory

现象:

今天在银河麒麟操作系统上编译Qt 写的程序,报如下 错误:

QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.
QFontDatabase: Cannot find font directory /home/tgm/qt/qt_sdk/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from http://dejavu-fonts.org for example) or switch to fontconfig.

分析原因:这是因为Qt安装目录下没有字体文件导致的,我的Qt安装目录为:

/usr/local/Qt 5.9.2

字体目录一般在Qt安装目录下的lib/fonts下即:

/usr/local/Qt 5.9.2/lib/fonts

解决方法:

找一个安装了windows操作系统的机器,将其字体库(一般在C:\Windows\Fonts目录下,有的还很大,几百兆吧)拷贝到/usr/local/Qt 5.9.2/lib/fonts目录或者系统字体目录,如:我的银河麒麟操作系统字体存放目录为:

/usr/share/fonts

然后执行:

sudo vim /etc/profile

在其后加入如下代码:


export QT_QPA_FONTDIR=/usr/share/fonts

/usr/local/Qt 5.9.2/lib/fonts

重启系统即可。

注意:windows下的字体库很大,我的444MB,对于嵌入式的、磁盘空间有限的情况,请根据你要的字体进行删减,以节约空间。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,可以通过`QApplication::setFont()`来设置应用程序的全局字体。如果在子界面中设置了`QApplication::setFont(font)`,但是字体并未生效,可能是以下原因之一: 1. 其他控件已经手动设置了字体,并覆盖了全局字体 如果在程序中使用了某些控件,并在这些控件上手动设置了字体,那么这些控件的字体可能会覆盖全局字体,导致在应用程序中设置的字体并未生效。 为了解决这个问题,你可以在需要修改字体的控件的槽函数中,使用该控件的`setFont()`函数来单独设置控件的字体。例如: ``` QFont font("Microsoft YaHei"); font.setPointSize(12); ui->label->setFont(font); ``` 这个示例将字体设置为"Microsoft YaHei",大小为12个像素,并将其应用到名为"label"的控件上。你可以将"label"替换成你需要修改字体的控件的名称。 2. 字体文件未被正确加载 如果在应用程序中设置的字体并未生效,那么可能是因为字体文件未被正确加载。在Qt中,需要加载字体文件才能使用该字体。你可以通过`QFontDatabase::addApplicationFont()`函数来加载字体文件,例如: ``` int fontId = QFontDatabase::addApplicationFont(":/font/msyh.ttf"); QString fontFamily = QFontDatabase::applicationFontFamilies(fontId).at(0); QFont font(fontFamily); font.setPointSize(12); qApp->setFont(font); ``` 这个示例将一个名为"msyh.ttf"的字体文件加载到了应用程序中,并将该字体应用到了整个应用程序中。你需要修改代码中的字体文件路径以匹配你的实际情况。 3. QApplication::setFont()必须在QApplication对象创建之前调用 如果在子界面中设置了`QApplication::setFont(font)`,但是字体并未生效,可能是因为在子界面中设置字体的代码在创建`QApplication`对象之后执行。这是因为`QApplication::setFont()`必须在`QApplication`对象创建之前调用才能生效。 为了解决这个问题,你可以在应用程序的主函数中设置全局字体,例如: ``` int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("Microsoft YaHei"); font.setPointSize(12); a.setFont(font); // 在这里设置全局字体 MainWindow w; w.show(); return a.exec(); } ``` 在这个示例中,我们在应用程序的主函数中先设置了全局字体,然后再创建了`MainWindow`窗口。这样就能够确保全局字体在整个应用程序中生效了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值