Russian Qt Forum

Qt => Общие вопросы => Тема начата: Vamireh от Май 28, 2014, 17:50



Название: [РЕШЕНО] C:/Пользователи... -> C:/Users...
Отправлено: Vamireh от Май 28, 2014, 17:50
Код:
qDebug() << QFile::exists("C:/Пользователи/user/Рабочий стол/qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe");
qDebug() << QFile::exists("C:/Users/user/Desktop/qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe");

Код:
false
true

Нужно ассоциировать свою программу с расширением файла. Из-за выше описанного нюанса невозможно открыть файлы из рабочего стола. Есть ли готовое решение или самому конвертировать?


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: gil9red от Май 28, 2014, 18:03
Получить путь к рабочему столу: qDebug() << QDesktopServices::storageLocation( QDesktopServices::DesktopLocation );


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Vamireh от Май 28, 2014, 18:15
Это я знаю, но допустим пользователь захочет открыть файл из C:/Пользователи, C:/Пользователи/user/Загрузки и т.д. Как это учесть?


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Hrundel от Май 28, 2014, 18:48
Эти два пути себя дублируют. Всегда пользуйся английским и ни ошибешься.


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Bepec от Май 28, 2014, 18:50
Простой ответ - скорее всего у вас русскоязычные пути в неправильной кодировке :) А если пути не существует - всегда вернёт false.


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Vamireh от Май 28, 2014, 19:41
Эти два пути себя дублируют. Всегда пользуйся английским и ни ошибешься.

Моя программа ассоциирована с одним расширением файла. Если пользователь открывает файл из рабочего стола, то путь в программу приходит русскоязычный, который, соответственно, не открывается.

Простой ответ - скорее всего у вас русскоязычные пути в неправильной кодировке :) А если пути не существует - всегда вернёт false.

Да не, с русскими путями все путем работает.


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Alex Custov от Май 28, 2014, 20:30
Из-за выше описанного нюанса невозможно открыть файлы из рабочего стола. Есть ли готовое решение или самому конвертировать?

То есть если ты щёлкаешь правой кнопкой по файлу и выбираешь "Открыть" или "Открыть с помощью", то твоей программе передаётся путь C:/Пользователи/... ?


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Vamireh от Май 28, 2014, 20:52
Из-за выше описанного нюанса невозможно открыть файлы из рабочего стола. Есть ли готовое решение или самому конвертировать?

То есть если ты щёлкаешь правой кнопкой по файлу и выбираешь "Открыть" или "Открыть с помощью", то твоей программе передаётся путь C:/Пользователи/... ?

Именно так.

На работе так, только что проверил в VIrtualBox тоже на семерке - передается C:/Users... и все работает....


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Bepec от Май 28, 2014, 21:50
По идее всё работать должно, завтра если руки дойдут посмотрю у себя. А мб и не посмотрю. :)


Название: Re: C:/Пользователи... -> C:/Users...
Отправлено: Vamireh от Май 29, 2014, 06:42
Установил Windows с того же диска, что дома в виртуалке стоит. Все заработало. В смысле стал англоязычные пути передовать. Не знаю, что было, ту винду эникейщик ставил и понятия не имею где он ту сборку откопал.


Название: Re: [РЕШЕНО] C:/Пользователи... -> C:/Users...
Отправлено: Bepec от Май 29, 2014, 06:49
Ну очень просто - локализация наверно вам мешала, выбранная при установке. Локализация создают символьные ссылки на выбранном языке.


Название: Re: [РЕШЕНО] C:/Пользователи... -> C:/Users...
Отправлено: Alex Custov от Май 29, 2014, 12:15
Ну очень просто - локализация наверно вам мешала, выбранная при установке. Локализация создают символьные ссылки на выбранном языке.

У меня тоже локализованная винда, пути нормальные английские. А самое интересное, что папки "Пользователи" не существует на диске вообще. Это какая-то виртуальная хрень от explorer-a, которая отображается только в нём.