Как показать путь DotDot в QTableView, используя QFileSystemModel?

Я заранее прошу прощения за мой английский. я имею QTableView с QFileSystemModel как модель в моем простом двухпанельном файловом менеджере. Он отображает файлы и каталоги правильно, но я хочу, чтобы он отображал строку DotDot, чтобы перейти к родителю текущего каталога. настройка QFileSystemModel::filter(QDir::AllEntries | QDir::NoDot) не помогает, DotDot по-прежнему не отображается в QTableView, Все вышесказанное верно для Qt 5.9.1 в Windows 7. Но когда я собираю приложение в Ubuntu, оно корректно отображает DotDot, и QFileSystemModel::filter() отлично работает в зависимости от своих аргументов. Могу ли я заставить его работать на Windows 7 или это ошибка? Вот упрощенный пример моего кода:

    QTableView *tableView = new QTableView;
    QFileSystemModel *fsModel = new QFileSystemModel;
    fsModel->setRootPath(QDir::rootPath());
    fsModel->setFilter(QDir::AllEntries | QDir::NoDot);
    tableView->setModel(fsModel);
    QObject::connect(tableView, &QTableView::doubleClicked, tableView, &QTableView::setRootIndex);
    tableView->show();

1 ответ

Решение

Сделайте собственный класс, унаследованный от QFileSystemModel. И переопределить виртуальные методы rowCount() и data(). Это непростой способ, но он позволяет хорошо контролировать контент, отображаемый в этой модели. Конечно, вы можете добавить каталоги Dot и DotDot (и даже DotDotDotDot:)).

Другие вопросы по тегам