如何将自定义字体应用于 QML 中的所有元素

问题描述 投票:0回答:2

我想知道是否有一种方法可以将自定义字体应用于 QML 中的所有元素,就像我们可以在 HTML 中轻松做到的那样,在标签主体上设置字体。 我已经可以在 QML 中使用以下字体:

FontLoader { id: robotoRegular; source: "fonts/Roboto-Regular.ttf" }

但是现在如果我做类似的事情:

ApplicationWindow {
    font.family: robotoRegular.name

它似乎不起作用,而且可能不应该起作用。或者有什么办法吗?

我正在使用 Qt 5.11.2、QtQuick 2.2。

qt fonts qml
2个回答
8
投票

试试这个代码:

#include <QFontDatabase>

void InstallDefaultFont()
{
    qint32 fontId = QFontDatabase::addApplicationFont(":/font.otf");
    QStringList fontList = QFontDatabase::applicationFontFamilies(fontId);

    QString family = fontList.first();
    QGuiApplication::setFont(QFont(family));
}

这也将为 QML 和小部件设置默认字体。


2
投票

无需编写 C++,您只需使用 QML 即可:

FontLoader {
    id: localFontRegular
    source: "qrc:/font/SourceHanSansCN-Regular.otf"
}

Text {
    id: name
    text: qsTr("text")
    font.family: localFontRegular.font.family
    font.weight: localFontRegular.font.weight
}
© www.soinside.com 2019 - 2024. All rights reserved.