Можно попробовать немного повелосипедить.
Есть метод QStandardItem::takeRow, который позволит забрать из модели сортируемые строки и сформировать список этих строк в памяти. Далее этот список отсортировать как требуется и вернуть строки прежнему родителю.
Думаю, должно получиться
Это дичайший говнокод, потому что каждый takeRow вызывает beginRemoveRows/endRemoveRows, что приводит к N изменениям вью (где N - количество рядов). Побочным эффектом является инвалидация всех persistent indexes (визуально, например, пропадёт выделенная строка)
Sort же вызывает layoutAboutToBeChanged/layoutChanged которые меняют persistent indexes (говорят, раньше была выделена 10я строка, а теперь 90я) + вызывают ОДНО обновление вью.
Т.е. вместо алгоритма со сложностью O(1) предлагается сложность O(N).
Но работать будет:)