使用QT 5.10递归过滤系统文件

时间:2018-04-30 23:09:46

标签: c++ qt

我正在使用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一起使用,或者我可能错过了什么?

0 个答案:

没有答案