【发布时间】:2019-08-27 17:23:49
【问题描述】:
使用 QML,我在一个 pragma Singleton 文件中定义了两个 FontLoader。当我在 QML 场景中运行我的程序时,我只能显示其中一种字体。如何获得我定义的两种字体来渲染?谢谢!
// Defining two fonts inside Fonts.qml:
pragma Singleton
import QtQuick 2.4
QtObject {
readonly property var primaryFont: FontLoader {
source: "../assets/fonts/CircularStd-Book.ttf"
}
readonly property var boldFont: FontLoader {
source: "../assets/fonts/CircularStd-Bold.otf"
}
}
// Calling both fonts in separate QML file:
import QtQuick 2.4
import "../../../imports/Fonts.qml"
Text {
id: welcomeMessage
text: "Good Morning"
font.family: Fonts.primaryFont.name
}
Text {
id: driverName
text: "Joe"
font.family: Fonts.boldFont.name
}
我希望welcomeMessage 文本以正常字体粗细显示,而driverName 文本以粗体粗细显示。但是,两种字体都以正常的字体粗细显示。
如果我在我的 pragma Singleton 中注释掉 primaryFont,那么 driverName 会以粗体显示。为什么我无法加载这两种字体?
【问题讨论】:
-
"name"的两个值是什么?由于两者似乎来自相同的基本字体,它们可能具有相同的名称并被合并,那么我认为您将不得不使用粗体:true 或 weight 属性。
-
你应该设置 driverName font.bold: true 让它工作。
-
@FrankOsterfeld 你是对的!我在 font.family 名称上运行了一个 console.log,粗体和主要字体都收到了“Circular Std”的值。我试图在我的 FontLoader 中使用自定义名称手动覆盖它,但是字体根本没有加载。我假设字体名称来自其元数据或其他什么?
-
我们还得出结论,
name属性在这里是不可预测的:stackoverflow.com/questions/45242560/…