Вы используете QFileDialog
, позвонив по номеру exec()
? Если да, у вас должна быть кнопка для переключения вида на Подробный вид . Это даст вам некоторые заголовки столбцов, по которым вы можете щелкнуть, чтобы отсортировать файлы. Следует помнить этот режим при следующем открытии диалогового окна, но вы можете принудительно вызвать его, позвонив setViewMode(QFileDialog::Detail)
перед вызовом exec()
.
В качестве альтернативы можно вызвать статическую функцию QFileDialog::getOpenFileName()
, которая откроет диалоговое окно файла, которое является родным для ОС, на которой вы работаете. Вашим пользователям может понравиться знакомство с этой опцией.
Обновление 1:
О порядке сортировки в шапке экрана из OP:
Этот снимок экрана фактически показывает отсортированный список. Я не знаю, происходит ли листинг из диалога Qt или из-за файловой системы, но я знаю Windows XP и позже делаю это так.
При сортировке имен файлов со встроенными числами любые серии последовательных цифр рассматриваются как одно число. При более классической простой сортировке строк файлы будут отсортированы следующим образом:
A_A_10e0
A_A_9a05
Идет символ за символом, первые 1 сортируются до 9.
.. Но с числовой интерпретацией (как в Windows 7 по крайней мере) они сортируются как:
A_A_9a05
A_A_10e0
9 сортов до 10.
Итак, сортировка, которую вы видите, является алфавитной с числовым толкованием, а не просто прямой символ за символом. Некоторое глубокое копание может потребоваться, чтобы увидеть, является ли это поведением Qt или поведением ОС и можно ли это настроить.
Обновление 2:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} <1039} по умолчанию сортирует строки в алфавитном порядке, поэтому для его использования не требуется много усилий для получения искомого поведения. Используйте следующий код, где у вас есть «точка x» в вашем примере .. (у вас почти было это:) </p>
QSortFilterProxyModel *sorter = new QSortFilterProxyModel();
sorter->setDynamicSortFilter(true); // This ensures the proxy will resort when the model changes
chooser.setProxyModel(sorter);