問題描述
我有一個通過 QML 文件指定的小部件.這個小部件包含一個頂級Rectangle
,它包含兩個Columns
.這些 Columns
中的每一個都包含許多 Text
元素.這個 QML 小部件包含在 C++ 中 QDeclarativeView
的子類中.
I have a widget specified through a QML file. This widget contains a top levelRectangle
which contains two Columns
. Each of these Columns
contains many Text
-elements. This QML widget is wrapped in a subclass of QDeclarativeView
in C++.
我想為每個 Text
元素指定字體.今天我通過指定頂級屬性來做到這一點:
I want to specify the font for each of these Text
-elements. Today I do this by specifying top-level properties:
property string fontfamily: "Arial"
property bool fontbold: false
property bool fontitalic: false
property int fontpixelsize: 11
property string fontcolor: "White"
并將每個 Text
元素綁定到這些屬性:
and bind each Text
-elements to these properties:
Text
{
color: fontcolor
font.family: fontfamily
font.bold: fontbold
font.italic: fontitalic
font.pixelSize: fontpixelsize
...
}
這不是很優雅,每次我需要支持新的東西時都需要添加新的字段(例如帶下劃線的字體).我無法聲明 font
類型的屬性并綁定到它(小部件為空白,qmlviewer 警告屬性后的預期類型").
This isn't very elegant and new fields needs to be added every time I need support for something new (e.g. underlined fonts). I have not been able to declare a property of type font
and bind to this instead (widget is blank and qmlviewer warns about "expected type after property").
是否有更好的方法為所有 Text
元素指定字體?
Is there a better way to specify a font for all Text
-elements?
注意!我正在手寫 QML 文件.
Note! I'm handwriting the QML files.
推薦答案
另一種可能是編寫一個新的 QML 組件,它繼承自 Text
并默認設置一些屬性:
Another possibility is to write a new QML component, that inherits from Text
an sets some properties by default:
StyledText.qml
import QtQuick 1.0
Text {
// set default values
color: "blue"
font.family: "Arial"
font.bold: true
font.italic: true
font.pixelSize: 12
}
ma??in.qml
import QtQuick 1.0
Rectangle {
Row {
spacing: 10
Column {
StyledText {
text: "Foo1"
}
StyledText {
text: "Bar1"
}
StyledText {
text: "Baz1"
}
}
Column {
StyledText {
text: "Foo2"
}
StyledText {
text: "Bar2"
}
StyledText {
text: "Baz2"
}
}
}
}
這篇關于在 Qt QML 中為許多文本元素指定字體的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!