在Item
的文档中,您可以找到:
注意:使用Text或TextEdit的implicitWidth并明确设置宽度会导致性能下降,因为文本必须布局两次。
所以我不应该写这样的东西:
Text {
width: implicitWidth
text: 'my text defines the width'
}
这意味着,如果我没有通过其他方式设置宽度,我无法有意义地锚定到Text
。
我想知道相同的性能损失是否适用于此结构:
Item {
id: myAnchorableTextBoundingBox
width: myText.implicitWidth
height: myText.implicitHeight
Text {
id: myText
text: 'my text defines the width'
}
}
或者这是这个用例的可能解决方法吗?
它甚至可以让我达到这样的最大宽度:
Rectangle {
color: 'transparent'
border.color: 'red'
width: myText.width + 2
height: myText.height + 2
}
Rectangle {
id: myAnchorableTextBoundingBox
y: 1
x: 1
border.color: 'black'
width: myText.truncated ? myText.width : myText.implicitWidth
height: myText.implicitHeight
Text {
id: myText
text: 'my text defines the width until it elides, then the width is used as limit'
elide: Text.ElideRight
width: 200
}
}
我会立即建立一个Component
,如果可以肯定的话,不会有(太大)惩罚。
答案 0 :(得分:0)
此解决方法应该可以正常工作。正如文档所述,在设置宽度时,性能损失只是一个问题:
使用implicitWidth [...]并明确设置宽度会导致性能下降
在这种情况下,您只是阅读implicitWidth
属性,而不是设置width
元素的Text
,因此警告不适用。