我有带有 TextEdit 的 QML 组件:
TextEdit {
...
font: settings.myFont
font.preferShaping: false
加载组件时出现错误
qml Can't create component <path_to_my_qml>: Property has already been assigned a value
指向行font.preferShaping: false
.
我尝试注释行
font.preferShaping: false
并通过以下方式在 C++ 端设置属性:
QFont Settings::myFont() const
{
...
font.setStyleStrategy(QFont::PreferNoShaping);
return font;
}
但是文本的外观与
font.preferShaping
属性的默认值相匹配,这是真的。
如何将
font.preferShaping
属性设置为 false 而不会出错?
最终,我需要在 QML 和 C++ 端实现相同的文本显示,其中文本通过
updatePaintNode
:
QSGNode* Text::updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePaintNodeData*)
{
...
painter.setFont(settings.myFont());
painter.drawText(rect, alignment(), m_textParams.text());
...
}
onFontChanged 信号发出后如何设置属性:
Text {
id: text
font: settings.myFont
onFontChanged: {
text.font.preferShaping = false;
}
}