Qml ListView重叠
Qml ListView overlap
我的 qml 文件中有这个 ListView
ListView {
id: listView
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.topMargin: 100
anchors.bottomMargin: 20
anchors.rightMargin: 20
anchors.leftMargin: 20
layoutDirection: Qt.LeftToRight
snapMode: ListView.SnapToItem
orientation: ListView.Horizontal
clip: true
model: ListModel
{
id: listmodel1
}
delegate: Item {
height: 50
Column {
Image {
source: link
sourceSize.height: 300
sourceSize.width: 100
fillMode: Image.PreserveAspectCrop
}
Text {
x: 5
color: 'white'
text: name
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
wrapMode: Text.WordWrap
}
spacing: 5
}
}
}
我使用此功能向其中添加元素,我基本上接受输入,运行 一些报废获取链接和标题 bla bla bla 并使用信号将其发回。我想也许问题出在添加它们的方式上?
function onSetName(name,link)
{
console.log(link)
var data={'name' : name ,'link': link}
listView.model.append(data)
}
它运行良好(添加元素部分)但所有项目重叠导致此
mess
提前致谢
您的委托项没有宽度。由于这是一个水平列表视图,您的代表的宽度为 0,因此它们被放置在彼此之上。
最简单的例子是:
delegate: Item {
height: 50
width: 100
Column {
...
}
}
我的 qml 文件中有这个 ListView
ListView {
id: listView
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
anchors.topMargin: 100
anchors.bottomMargin: 20
anchors.rightMargin: 20
anchors.leftMargin: 20
layoutDirection: Qt.LeftToRight
snapMode: ListView.SnapToItem
orientation: ListView.Horizontal
clip: true
model: ListModel
{
id: listmodel1
}
delegate: Item {
height: 50
Column {
Image {
source: link
sourceSize.height: 300
sourceSize.width: 100
fillMode: Image.PreserveAspectCrop
}
Text {
x: 5
color: 'white'
text: name
font.bold: true
anchors.horizontalCenter: parent.horizontalCenter
wrapMode: Text.WordWrap
}
spacing: 5
}
}
}
我使用此功能向其中添加元素,我基本上接受输入,运行 一些报废获取链接和标题 bla bla bla 并使用信号将其发回。我想也许问题出在添加它们的方式上?
function onSetName(name,link)
{
console.log(link)
var data={'name' : name ,'link': link}
listView.model.append(data)
}
它运行良好(添加元素部分)但所有项目重叠导致此 mess
提前致谢
您的委托项没有宽度。由于这是一个水平列表视图,您的代表的宽度为 0,因此它们被放置在彼此之上。
最简单的例子是:
delegate: Item {
height: 50
width: 100
Column {
...
}
}