Есть 2 проблемы.
Первый , описанный ответом Фрэнка Остерфельда . Move:
QListWidgetItem *newItem = new QListWidgetItem;
в вашу петлю.
Вторая связана с моделью потоков QFileSystemModel
. из документов для QFileSystemModel
:
В отличие от QDirModel, QFileSystemModel использует отдельный поток для заполнения себя, поэтому он не приведет к зависанию основного потока при запросе файловой системы. Вызовы rowCount () будут возвращать 0, пока модель не заполнит каталог.
и
Примечание. Для QFileSystemModel требуется экземпляр приложения с графическим интерфейсом.
Я не думаю, что QFileSystemModel()
будет работать должным образом до после цикла событий Qt (который запускается a.exec()
в вашем примере).
В вашем случае, model->rowCount(parentIndex)
возвращает 0, даже если в каталоге есть элементы (по крайней мере, это то, что он делает в моем тесте).
Замена QFileSystemModel
на QDirModel
(и удаление вызова model->setRootPath(dir)
, который QDirModel` не поддерживает) заполняет список.