Как создать браузер для системных дисков, папок и файлов

Я хочу создать как следующее:

К сожалению, Qt не поддерживает готовый виджет для этого.

Есть плагин или какой-нибудь способ сделать это?

2

Решение

использование QFileSystemModel на QTreeView. Если вы посмотрите на первую из этих двух ссылок, она на самом деле содержит пример кода, который делает именно это.

5

Другие решения

лично предложил бы не используйте QWidgets для этой задачи, если вы можете избежать этого. Вместо этого попробуйте использовать новый блестящий QML-способ создания пользовательского интерфейса Qt. Это может быть только мое личное мнение, но QTreeView имеет несколько недостатков, на мой взгляд.

QML

Здесь вы можете найти простой пример как это делается с QML в эти дни. Это использует FolderListModel от Qt.labs.folderlistmodel 2.1,

FolderListModel обеспечивает доступ к информации о содержимом папки в локальной файловой системе, предоставляя список файлов для просмотра и других компонентов данных.

Примечание. Этот тип доступен благодаря импорту модуля Qt.labs.folderlistmodel. Элементы в модуле Qt.labs не гарантированно останутся совместимыми в будущих версиях.

import Qt.labs.folderlistmodel 2.1

Свойство folder определяет папку для доступа. Информация о файлах и каталогах в папке предоставляется через интерфейс модели.

C ++ и QWidgets

Если вы настаиваете на том, чтобы делать в C ++ со старым QWidget установить, ваш выбор, вероятно, использовать QTreeView как это вид дерева в конце концов, а затем объединить это с QFileSystemModel.

Код будет примерно таким:

QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());
QTreeView *tree = new QTreeView(splitter);
tree->setModel(model);
tree->setRootIndex(model->index(QDir::currentPath()));
1