我正在尝试类似the tutorial的代码,但我得到了QML矩形:检测到属性"宽度"''在列表视图委托上。这仅发生在单词大于listView.width
且发生文本换行的消息上。这种情况一直发生。我该如何解决?
delegeate: Rectangle {
id: delegateFrame
width: Math.min(messageText.implicitWidth , listView.width)
height: messageText.implicitHeight
Label {
id: messageText
anchors.fill: parent
text: model.text
wrapMode: Label.Wrap
}
}
我使用的是Qt 5.8。
修改
菲利克斯在答案中提出改变,但它只改变了宽度"警告中的单词" implictWidth"。
delegeate: Rectangle {
id: delegateFrame
implicitWidth: Math.min(messageText.implicitWidth , listView.width)
implicitHeight: messageText.implicitHeight
Label {
id: messageText
width: parent.width
text: model.text
wrapMode: Label.Wrap
}
}
答案 0 :(得分:2)
原因可能是height: messageText.implicitHeight
和anchors.fill: parent
。原因是:
change label height --> change delegate hight --> change anchors --> change label height ...
QML检测到这些循环并中断它们。在某些情况下,您必须使用这些,因为这是存档布局的唯一方法。
但是,在您的情况下,可能会有一个解决方案。您可以尝试以下方法之一,看看它们是否有效:
implicitHeight
和implicitWidth
。有时那些删除警告anchors.fill
绑定宽度:width: parent.width
。由于您已经将父母身高调整为孩子,因此孩子不需要将其身高更改为父母RowLayout
。它们提供了放置项目和使用附加属性的高级方法来调整项目的显示方式