gpt4 book ai didi

c++ - 垂直 ListView 内的水平 ListView 模型

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:32 26 4
gpt4 key购买 nike

我想将水平 ListView 作为垂直 ListView 的委托(delegate)。是否可以从 C++ 将不同的模型附加到水平 ListView ?

 ListView {
id: eventList
model: N (N tells how many horizontal lists are there)
delegate:
ListView {
id: horizontall
model: ?? // How to attach different model from C++ to each horizontal list
orientation: ListView.Horizontal

在 C++ 部分,我实现了 N 个从 QAbstractlistmodel 派生的 QList 列表

最佳答案

是的,这是可能的。不可能制作一个包含另一个 ListModelListModel。至少在 QML 中是不可能的。

这里是如何制作它的快速而肮脏的例子。它能解决您的问题吗?

import QtQuick 2.4
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.4
import QtQuick.Window 2.2

Window {
visible: true
width: 640
height: 480

ListModel {
id: listModel
ListElement {slmIndex: 0}
ListElement {slmIndex: 1}
ListElement {slmIndex: 2}
ListElement {slmIndex: 3}
ListElement {slmIndex: 4}
ListElement {slmIndex: 5}
}

ListModel {
id: model1
ListElement { name: "1" }
}
ListModel {
id: model2
ListElement { name: "1" }
ListElement { name: "2" }
}
ListModel {
id: model3
ListElement { name: "1" }
ListElement { name: "2" }
ListElement { name: "3" }
}
ListModel {
id: model4
ListElement { name: "1" }
ListElement { name: "2" }
ListElement { name: "3" }
ListElement { name: "4" }
}
ListModel {
id: model5
ListElement { name: "1" }
ListElement { name: "2" }
ListElement { name: "3" }
ListElement { name: "4" }
ListElement { name: "5" }
}
ListModel {
id: model6
ListElement { name: "1" }
ListElement { name: "2" }
ListElement { name: "3" }
ListElement { name: "4" }
ListElement { name: "5" }
ListElement { name: "6" }
}
property var secondLayerModels: [
model1, model2, model3, model4, model5, model6
]

ListView {
anchors.centerIn: parent
width: 200
height: 200
clip: true
model: listModel
orientation: ListView.Vertical
delegate: ListView {
width: 200
height: 50
model: secondLayerModels[slmIndex]
orientation: ListView.Horizontal
delegate: Rectangle {
width: 50
height: 50
border.color: "black"
Text {
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
text: name
}
}
}
}
}

我不确定这个答案是否完全涵盖了这个问题。它不包括如何创建将公开另一个模型的 C++ 模型。

关于c++ - 垂直 ListView 内的水平 ListView 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37564520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com