Рекурсивная фильтрация системных файлов с QT 5.10 - PullRequest
0 голосов
/ 01 мая 2018

Я использую QFileSystemModel и переключаюсь для рекурсивной фильтрации системных файлов с использованием QSortFilterProxyModel. Корневая папка работает довольно хорошо, но ни один из файлов в папках не отображается в результате.

РЕДАКТИРОВАТЬ (полный пример):

#include <QApplication>
#include <QMainWindow>
#include <QTreeView>
#include <QFileSystemModel>

int main(int in_argc, char **in_argv)
{
    QString l_path = "C:/";

    QApplication l_app(in_argc, in_argv);
    QMainWindow l_window;

    QFileSystemModel l_model;
    l_model.setFilter(QDir::AllEntries);
    QModelIndex l_index = l_model.setRootPath(l_path);

    QSortFilterProxyModel l_filter;
    l_filter.setSourceModel(&l_model);
    l_filter.setRecursiveFilteringEnabled(true);

    QListView *l_view = new QListView;
    l_view->setModel(&l_filter);
    l_view->setRootIndex(l_filter.mapFromSource(l_index));

    QWidget l_widget;
    QVBoxLayout l_layout;
    QLineEdit l_line;
    l_layout.addWidget(&l_line);
    l_layout.addWidget(l_view);
    l_widget.setLayout(&l_layout);

    l_window.connect(&l_line, &QLineEdit::textChanged, [&l_filter](const QString &in_text)
    {
        l_filter.setFilterWildcard(in_text);
    });
    l_window.setCentralWidget(&l_widget);
    l_window.show();

    return l_app.exec();
}

Я не видел ни одного примера в качестве доказательства концепции, поэтому мне интересно, должен ли setRecursiveFilteringEnabled работать с QFileSystemModel или, может быть, я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...