Я изучаю Qt Quick для создания файлового менеджера, но у меня нет опыта работы с QML или графическим интерфейсом в целом. Первый шаг - перечислить содержимое папки, используя FolderListModel
. Я получил example code, используя ListView
, но, естественно, я хочу отображать несколько полей в дополнение к имени, например. размер, время и т. д. Таким образом, я думаю об использовании TableView
.Делегировать FolderListModel в TableView
Однако мне не ясно, как делегировать каждую запись в виде строки в TableView
. В настоящее время я просто использую itemDelegate
для отображения fileName
, и, как результат, в каждой строке все столбцы повторяют имя записи. Поэтому я думаю, что rowDelegate
- правильный способ, но как мне сделать правильный делегат Component
для этой цели? Концептуально я хотел бы указать массив полей, например. [model.fileName, model.fileSize]
соответствует столбцам таблицы. Возможно ли это?
Для уточнения я отправляю код ниже:
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
}
}
}
}
}
}