linux - QFontDatabase::addApplicationFont 适用于嵌入式 Linux,但不适用于 Linux Ubuntu

标签 linux qt ubuntu fonts

我有一个使用 Qt 4.8 开发的应用程序,为嵌入式 Linux Arm 和 Linux Ubuntu 编译。它使用一组特定的字体,我需要安装这些字体才能运行,这是我用 QFontDatabase::addApplicationFont 做的。当我为嵌入式 Linux 编译时一切正常,但是当我为 Linux Ubuntu 编译时,我得到 -1 并且没有加载字体。

我试图在网上找到问题的解决方案,但没有找到任何帮助。通过将 Qt 4.6 更新到 4.7(无用)或通过安装我已经拥有的 fontconfig 解决了类似的问题。此外,我在 Qt Assistant 中找不到任何有用的东西,并检查了 .ttf 文件的路径。

我们将不胜感激。

这是我使用的代码:

QFontDatabase::removeAllApplicationFonts();

QDir fontDir(DEFAULT_FONTS_PATH);
QStringList fontFileList = fontDir.entryList(QStringList("*.ttf"), QDir::Files | QDir::NoDotDot | QDir::NoDot);

mDebugS(QString("Found %1 fonts on folder theme/fonts").arg(fontFileList.size()));

//
qint32 fontId;

foreach (const QString& filename, fontFileList)
{
    fontId = QFontDatabase::addApplicationFont(DEFAULT_FONTS_PATH "/" + filename);

    if (Q_UNLIKELY(fontId == -1))
    {
        const QString strTemp = QString("Unable to install font %1").arg(filename);

        mLog(strTemp);
        mDebugS(strTemp);
    }
    else
        applicationFontsIdList.append(fontId);
}

mDebugS(QString::number(applicationFontsIdList.size()) + " fonts are installed");

最佳答案

我在使用 Qt(嵌入式)4.8.6 时遇到了同样的问题。要解决字体问题,您需要告诉 Qt 在为非嵌入式环境构建时启用对 fontconfig 工具的支持。信息可以在文档中找到 ( Qt for X11 Requirements )

您需要在您的系统上安装fontconfig的开发者包:

sudo apt-get install libfontconfig1-dev

在从源代码构建 Qt 之前,您需要在配置步骤中指定以下选项:

-fontconfig

当使用此版本的 Qt 构建我的应用程序时,addApplicationFont 工作正常并且一切看起来都很棒。

关于linux - QFontDatabase::addApplicationFont 适用于嵌入式 Linux,但不适用于 Linux Ubuntu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286837/

相关文章:

linux - BASH Linux 退出读取日志直到特定字符串

c++ - 使用 qt c++ 设置手动位置并创建文件

qt - Qt Quick Controls 2 上 SpinBox 的后缀选项

c++ - Qt/C++ - 对调用者/被调用者、对象所有权感到困惑

Ubuntu 15.10 : port 8080 already used

c - c 中是否有用于创建、删除或列出 btrfs 子卷的任何 BTRFS 库接口(interface)?

java - WSO2 API Manager安装无法运行Java

linux - 读取数字,然后将它们添加到一个循环中。庆典/Linux

linux - Odoo 11 我应该选择哪个环境

linux - 仅针对Linux中的特定进程自动解密文件