我正在为UI构建基于Qt-Quick 2的Qt5应用程序。显示带有突出显示组件的ListView时出现问题。当我滚动ListView时,高亮矩形在ListView之外可见,我找不到避免它的方法。
以下是最小QML文件问题的示例:
import QtQuick 2.0
Rectangle {
width: 360; height: 600
ListView {
width: 350; height: 200
anchors.centerIn: parent
id: myList
model: myModel
highlight: highlightBar
delegate: Item {
width: 400; height: 20
Text { text: name }
MouseArea {
id: mArea
anchors.fill: parent
onClicked: { myList.currentIndex = index; }
}
}
}
Component {
id: highlightBar
Rectangle {
width: parent.width; height: 20
color: "#FFFF88"
}
}
ListModel {
id: myModel
}
/* Fill the model with default values on startup */
Component.onCompleted: {
for(var i = 0; i < 100; i++) {
myModel.append({ name: "Big Animal : " + i});
}
}
}
有没有办法将组件“限制”到其父边框或在滚动时隐藏高亮组件?
答案 0 :(得分:3)
据documentation报道:
注意:视图不会自动启用剪辑。如果视图没有被其他项目或屏幕剪切,则需要设置clip:true以便将视图外的项目剪裁得很好。
因此,您所遇到的是一种常见行为,您应该1)通过其他Item
剪辑视图(例如标题Rectangle
和页脚Rectangle
z:infinite
1}}或简单地将clip
属性设置为true
,即
ListView{
//...
clip:true
//...
}
剪辑有一些perfomance disavantages,这会在应用程序增长时对其产生很大影响。因此,应仔细评估其用法,特别是在视图场景之外。