Что не так с результатом?
В большинстве случаев сортируется не сама модель, а представление, используя QSortFilterProxyModel . Вот пример из документации:
QTreeView *treeView = new QTreeView;
MyItemModel *sourceModel = new MyItemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(sourceModel);
treeView->setModel(proxyModel);
В приведенном выше примере вы можете смешивать роли и столбцы. Ваш список ролей должен выглядеть так:
enum Role {
NameRole=Qt::UserRole,
DistanceRole,
...
};
Если вы хотите отсортировать по дистанционной роли, вы звоните:
model->setSortRole( Car2goVehicle::DistanceRole );
Затем сортируйте по некоторому столбцу (который не имеет ничего общего с ролью), например, столбец 0:
model->sort( 0, Qt::AscendingOrder );