我的应用程序中有一个简单的页面:
import QtQuick 2.5
import QtQuick.Controls 2.0
Page {
ListView {
anchors.fill: parent
model: 50
delegate: Item {
clip: true
height: 50
anchors {
left: parent.left
right: parent.right
}
Rectangle {
color: "red"
anchors.fill: parent
}
Label {
text: index
}
}
}
}
有时,当我滚动时,我会看到行之间的间距,但间距为零。我想它是某种坐标舍入误差。我找到了问题的可能来源 - clip:true在委托中。如果我删除它,那么一切都很好。
这是Qt的错误,我该如何解决它?
答案 0 :(得分:1)
如果你在修改剪辑时只有那些毛刺,请不要使用它 - 至少不在委托的根节点中。
Page {
ListView {
anchors.fill: parent
model: 50
delegate: Rectangle {
clip: false // <-- Do not clip in the delegate's root node
height: 50
color: "red"
anchors {
left: parent.left
right: parent.right
}
Item {
anchors.fill: parent
clip: true // <-- instead you might clip in a delegate's child node
Label {
text: index + 'a very long string that might be clipped at some point'
}
}
}
}
}
至少在我的电脑上显示出这些故障。
但是我会尝试不剪辑委托,因为裁剪是一个性能因素,可能会影响特别是当对象移动时(例如滚动ListView
)
答案 1 :(得分:1)
ListView的pixelAligned属性绝对解决了我的问题
ListView {
...
pixelAligned: true
...
}