Я хочу создать как следующее:
К сожалению, Qt не поддерживает готовый виджет для этого.
Есть плагин или какой-нибудь способ сделать это?
использование QFileSystemModel на QTreeView. Если вы посмотрите на первую из этих двух ссылок, она на самом деле содержит пример кода, который делает именно это.
лично предложил бы не используйте QWidgets для этой задачи, если вы можете избежать этого. Вместо этого попробуйте использовать новый блестящий QML-способ создания пользовательского интерфейса Qt. Это может быть только мое личное мнение, но QTreeView
имеет несколько недостатков, на мой взгляд.
Здесь вы можете найти простой пример как это делается с QML в эти дни. Это использует FolderListModel от Qt.labs.folderlistmodel 2.1
,
FolderListModel обеспечивает доступ к информации о содержимом папки в локальной файловой системе, предоставляя список файлов для просмотра и других компонентов данных.
Примечание. Этот тип доступен благодаря импорту модуля Qt.labs.folderlistmodel. Элементы в модуле Qt.labs не гарантированно останутся совместимыми в будущих версиях.
import Qt.labs.folderlistmodel 2.1
Свойство folder определяет папку для доступа. Информация о файлах и каталогах в папке предоставляется через интерфейс модели.
Если вы настаиваете на том, чтобы делать в 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()));