QML:如何检索默认字体对象?

jon*_*s68 3 c++ qt qml

我有一个 QML ,其中Item包含一些Text字段,它们应该具有相同的字体。为了实现这一目标,我引入了一个新的myFonttype属性font。初始化此属性我使用该Qt.font函数,该函数创建一个字体对象。但我必须指定至少一个属性( 或familypointSize

我现在的问题是:如何检索myFont属性的默认字体?如果我只创建一个Text{}项目,它已经附加了默认字体,如何为该myFont属性获取相同的字体?(同时,我使用隐藏Text字段并为其font属性创建别名,但我想要一个更好的解决方案)。

Item {
 property font myFont: Qt.font({pointSize: 10})
 Text {
  id: header
  font: myFont
  text: "My Header"
 }
 Text {
  id: subject
  font: myFont
  text: "My Subject"
 }
 Text {
  id: message
  font: myFont
  text: "Some meassage!"
 }
}
Run Code Online (Sandbox Code Playgroud)

jon*_*s68 5

现在,我已经深入研究了 Qt 源代码。事实证明,Qt 使用注册的私有 TextSingleton,其定义(Qt 5.6)为:

pragma Singleton
import QtQuick 2.2
Text {
}
Run Code Online (Sandbox Code Playgroud)

各种qml控件的font属性初始化:

font: TextSingleton.font
Run Code Online (Sandbox Code Playgroud)

进一步深入研究 C++ 代码会发现,对于该Text项目,该font属性是默认的初始化QFont,它给出了QFont从 检索的对象QGuiApplication::font()