Как показать путь 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:)).