在我的应用程序中,我显示了一个嵌套列表,它将组和文件夹显示为其子项。我已经构建了必要的函数,以便根据用户点击的项目在c ++的后端生成一个新列表。
我已经具备了通过QProperty将列表传递给qml的必要功能。
所以我的问题是,我以前的列表视图如何动态显示新的列表视图。考虑到也应该可以单击“返回”按钮,该按钮应该再次加载显示组和文件夹的上一页。
这是我现在的代码,显示了组及其子组件(文件夹)
import QtQuick 2.4
import QtQuick.Window 2.2
//import ListMode 1.0
Rectangle {
height: 250
width: 140
color: "pink"
//property var aNum: 0
Component {
id: folderDelegate
Item {
width: 140
height: col2.childrenRect.height
Column {
id: col2
anchors.left: parent.left
anchors.right: parent.right
Rectangle {
height: 20
width: parent.width
border.color: "black"
MouseArea {
anchors.fill: parent
onClicked: treemodel.getObject(model.ID + ":" + model.Name)
}
Text {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
id: name1
text: model.Name
}
}
}
}
}
ListView {
id: outer
model: myModel
delegate: groupsDelegate
anchors.fill: parent
}
Component {
id: groupsDelegate
Item {
width: 140
height: col.childrenRect.height
Column {
id: col
anchors.left: parent.left
anchors.right: parent.right
Text {
anchors.horizontalCenter: parent.horizontalCenter
id: t1
font.bold: true
font.underline: true
font.pointSize: 9
text: model.Name
}
ListView {
id: folderlist
model: treemodel.lists[treemodel.modIndex]
delegate: folderDelegate
contentHeight: contentItem.childrenRect.height
height: childrenRect.height
anchors.left: parent.left
anchors.right: parent.right
clip: true
}
}
}
}
}
我一直在阅读文档和搜索论坛,但信息非常庞大。因此,赞赏正确方向的指针。
答案 0 :(得分:0)
为每个项目设置主模型以拥有自己的唯一ID。因此,当单击某个项目时,我会运行一个函数,该函数根据单击的ID +名称来抓取并存储该项目
MouseArea {
anchors.fill: parent
onClicked :{
treemodel.getObject(model.ID + ":" + model.Name)
stackView.push(Qt.resolvedUrl("content/ButtonPage.qml"))
}
}
接下来,基于单击的项目,我有函数填充加载到ButtonPage.qml中的不同QList项。
调用的c ++函数是:
Q_INVOKABLE void getObject(QString index) {
clickedItemID = index;
getClickedItem();
getFilesByFolder();
}
现在,我不确定这是否是一个好的解决方案。但对我来说这很有效。也许它也适用于其他人。