在C ++中添加自定义字体,并在QML中使用其姓氏来调用它们

时间:2016-10-17 15:04:15

标签: c++ qt fonts qml

在我的qrc文件中,我有以下字体:

enter image description here

如果我在操作系统上安装它们(这里是Windows),我可以使用以下名称在QML中调用它们:

import QtQuick.Controls 2.0

Label {
    id: label
    font.family: "Universalis ADF Std"
}

但如果他们没有安装,我仍然希望将它们提供给我的QML文件。

当然,使用QFontDatabase逐个添加字体有效:

QDir    dir{"path/to/fonts"};
for (auto file : dir.entryList(QDir::Files))
{
    if (QFontDatabase::addApplicationFont("path/to/fonts/" + file))
        std::cerr << "Fail to add font " << file << std::endl;
}

但是我无法用#34; Universalis ADF Std&#34;来召集整个小组。请注意,C++部分在加载QML文件之前发生。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

感谢peppe的帖子,我意识到我制作的代码是有效的。我忘记了在Windows上安装和卸载字体后需要重新启动计算机。它搞乱了我的程序,因为我真的不知道字体是否正确加载。总结一下:

  1. 检查操作系统上是否尚未提供要加载的字体。如果是这种情况,请将其卸载并重新启动您的计算机
  2. 在运行QML文件之前从C ++加载字体
  3. 要使用字体的所有样式(粗体,斜体等),请使用其姓氏调用字体:font.family: "Universalis ADF Std"