我有一个 QML ,其中Item包含一些Text字段,它们应该具有相同的字体。为了实现这一目标,我引入了一个新的myFonttype属性font。初始化此属性我使用该Qt.font函数,该函数创建一个字体对象。但我必须指定至少一个属性( 或family)pointSize。
我现在的问题是:如何检索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)
现在,我已经深入研究了 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()。
| 归档时间: |
|
| 查看次数: |
5227 次 |
| 最近记录: |