我有一个 QML Item
,里面有一些 Text
字段,它们应该有相同的字体。为了实现这一点,我引入了一个 font
类型的新属性 myFont
。请初始化此属性 我使用 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!"
}
}
最佳答案
我认为解决这个问题的正确方法是使用您需要使用的字体创建您自己的对象类型。
在下面的示例中,新对象将是 MyText.qml
。我不知道你的整个代码,但我想你有一个 ListView
,其中包含你在问题中发布的委托(delegate)。
MyText.qml
import QtQuick 2.0
Text {
font: Qt.font({pointSize: 10})
}
main.qml
import QtQuick 2.5
import QtQuick.Window 2.2
Window {
visible: true
ListModel {
id: myModel
ListElement {
header: "header xxx"
subject: "subject xxx"
message: "message xxx"
}
ListElement {
header: "header yyy"
subject: "subject yyy"
message: "message yyy"
}
ListElement {
header: "header zzz"
subject: "subject zzz"
message: "message zzz"
}
}
ListView {
anchors.fill: parent
model: myModel
delegate: Item {
width: 300; height: 80
Column {
MyText {
id: myheader
text: header + " - family: " + font.family + " size: " + font.pointSize
}
MyText {
id: mysubject
text: subject + " - family: " + font.family + " size: " + font.pointSize
}
MyText {
id: mymessage
text: message + " - family: " + font.family + " size: " + font.pointSize
}
}
}
}
}
关于c++ - QML:如何检索默认字体对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712936/