Delegar FolderListModel no TableView
Estou aprendendo o Qt Quick a criar um gerenciador de arquivos, mas não tenho experiência em QML ou GUI em geral. O primeiro passo é listar o conteúdo de uma pasta, usandoFolderListModel
. Eu tenho ocódigo de exemplo trabalhando usandoListView
, mas naturalmente quero exibir vários campos além do nome, por exemplo tamanho, hora e assim por diante. Então, eu estou pensando em usarTableView
.
No entanto, não está claro para mim como delegar cada entrada como uma linha noTableView
. Atualmente estou simplesmente usandoitemDelegate
mostrarfileName
, e o resultado é que em cada linha, todas as colunas repetem o nome da entrada. Então eu achorowDelegate
é a maneira correta, mas como faço para delegar adequadamenteComponent
para aquele propósito? Conceitualmente, gostaria de especificar uma matriz de campos, por exemplo[model.fileName, model.fileSize]
correspondente às colunas da tabela. Isso é possível?
Para esclarecer, estou postando o código abaixo:
import QtQuick 2.4
import QtQuick.Controls 1.4
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import Qt.labs.folderlistmodel 2.1
ApplicationWindow {
visible: true
width: 900
height: 600
title: qsTr("Hello World")
Item {
anchors.fill: parent
width: 900
height: 600
SplitView {
id: splitView1
anchors.fill: parent
TabView {
id: tabView1
width: splitView1.width / 2
Tab {
title: qsTr("Home")
TableView {
id: tableView1
width: splitView1.width / 2
TableViewColumn {
role: "name"
title: qsTr("Name")
width: tableView1.width * 0.75
}
TableViewColumn {
role: "size"
title: qsTr("Size")
width: tableView1.width * 0.25
}
FolderListModel {
id: folderModel2
folder: "file:/home/username"
nameFilters: ["*"]
showHidden: true
}
Component {
id: fileDelegate2
Text {
text: model.fileName
}
}
model: folderModel2
itemDelegate: fileDelegate2
}
}
}
}
}
}