QFileSystemModel и QTreeView

Я показываю QFileSystemModel через QTreeView.

Всякий раз, когда пользователь щелкает каталог (расширенный или нерасширенный), я хочу получить список файлов внутри этого каталога.

void MyModel::selectionChanged(const QItemSelection& selected,const QItemSelection& deselected) {
    for (auto const & it : selected.indexes()) {
        for (int i=0;i<rowCount(it);i++) {
            auto child = it.child(i, it.column());
            qDebug() << fileName(child);
        }
    }
}

Проблема с приведенным выше кодом заключается в том, что он работает только после расширения этого конкретного каталога. Пока каталог никогда не расширялся (с момента запуска программы), rowCount равен 0.

Как я могу заставить модель заполнять дочерние элементы данного индекса модели? Без обязательного показа детей в представлении? В этом случае будет достаточно одного уровня дочерних индексов.


person Jan Müller    schedule 01.01.2018    source источник
comment
В качестве альтернативы... почему бы просто не использовать путь, связанный с выбранным индексом модели, для инициализации QDirIterator и перебирать его содержимое?   -  person G.M.    schedule 01.01.2018
comment
@G.M. ну очень умное предложение! Большое спасибо.   -  person Jan Müller    schedule 01.01.2018
comment
Не уверен, что точная причина все еще представляет интерес, но может предложить решение, основанное на перегрузке doc.qt.io/qt-5/qabstractitemmodel.html#hasChildren   -  person Alexander V    schedule 03.01.2018