在QML中使用Text.implicitWidth时的性能惩罚

时间:2016-12-19 14:40:05

标签: qt qml qtquick2

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,如果可以肯定的话,不会有(太大)惩罚。

1 个答案:

答案 0 :(得分:0)

此解决方法应该可以正常工作。正如文档所述,在设置宽度时,性能损失只是一个问题:

  

使用implicitWidth [...]并明确设置宽度会导致性能下降

在这种情况下,您只是阅读implicitWidth属性,而不是设置width元素的Text,因此警告不适用。

相关问题