TreeView : How could I show directories first?
Unsolved
General and Desktop
-
I assume that you are using
QFileSystemModel
?
As far as I know / can tell it's not possible to just flick a switch. However, you can still get this going by implementing a custom sort-filter model (subclassingQSortFilterProxyModel
). You should be able to overwriteQSortFilterProxyModel::lessThan()
to implement the behavior your are looking for. You would basically compare theisDir()
attribute that you can retrieve from the underlyingQFileSystemModel
.Something like this comes to mind (untested!):
bool MySortFilterModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { QFileSystemModel* model = qobject_cast<QFileSystemModel*>(sourceModel()); if (!model) { qFatal("Shit hit the fan"); return true; } if (!model->fileInfo(left).isDir() && model->fileInfo(right).isDir()) { return false; } return true; }
This is just a - most likely not even compiling - example showing the general idea behind this. You'd have to also take the sorting order into account by checking
QSortFilterProxyModel::sortOrder()
.I hope that helps somehow.