Как мне получить правильный регистр пути? - PullRequest
10 голосов
/ 05 сентября 2010

У меня небольшая, но зудящая проблема. Как получить правильный регистр для пути Windows в Qt?

Допустим, у меня есть путь c:\documents and settings\wolfgang\documents, сохраненный в QString str, и я хочу знать правильный регистр, здесь C:\Document and Settings\Wolfgang\Documents. QDir(str).absolutePath() не дает мне путь с правильным регистром.

Любые предложения, так как я понятия не имею, что еще я мог бы попробовать?

Спасибо за ваше время!

Ответы [ 3 ]

6 голосов
/ 05 сентября 2010

Нет простого способа сделать это, но вы можете попробовать сделать QDir.entryList, а затем выполнить поиск результатов без учета регистра. Это предоставит вам правильное имя файла. Затем вам нужно получить absolutePath для этого результата.

Это должно дать вам сохраненный регистр для пути / имени файла.

0 голосов
/ 28 января 2019

Я думаю, что решение, в настоящее время принятое OP, с перечислением всех дочерних элементов на каждом уровне каталога, действительно неэффективно, быстро и грязно.Должен быть лучший способ.Поскольку эта проблема с путём с правильным регистром относится только к Windows (другие платформы чувствительны к регистру, AFAIK), я думаю, что совершенно правильно использовать #ifdef и вызывать Windows API и писать что-то вроде этого:*

Я не проверял, могут быть некоторые незначительные проблемы.Пожалуйста, дайте мне знать, если это не работает.

0 голосов
/ 06 сентября 2010

Вы можете использовать QFileInfo для этого и функции

QString QFileInfo::absoluteFilePath () const вернет абсолютный путь к файлу.

например:

QFileInfo yourFileInfo(yourPath);
QString correctedCasePath = yourFileInfo.absoluteFilePath ();

Еще одним преимуществом является то, что yourPath может быть QFile или QString, так что вы можете использовать его непосредственно с дескриптором , который у вас есть. Помимо этого, есть также другие операции, доступные через QFileInfo, которые могут получить полезную информацию о файле, на который ссылаются ..

Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...