Russian Qt Forum
Ноябрь 25, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Открыть папку в проводнике с кириллицей в названии  (Прочитано 4401 раз)
Anna Maria
Гость
« : Июнь 02, 2009, 10:45 »

Здравствуйте!
Нужно написать маленькое приложение, а в С++ и QT мало что понимаю.
Помогите пожалуйста.
Проблема следующая:
Код
C++ (Qt)
QString tmp = tr("/test");
//QString tmp = tr("/тест");
 
QString new_path="file:///" + QCoreApplication::applicationDirPath()+tmp;
QDesktopServices::openUrl(QUrl(new_path));
 

Если название папки латиницей, папка замечательно открывается. Если же кириллицей - не работает. Грустный
Как исправить?
Записан
sLiva
Гость
« Ответ #1 : Июнь 02, 2009, 15:24 »

Попробуй установить кодек для tr

Код
C++ (Qt)
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
 
Записан
White Owl
Гость
« Ответ #2 : Июнь 02, 2009, 20:32 »

URL по определению воспринимает только латинский алфавит. Все остальное должно быть закодировано в форму %XX где XX это шестнадцатиричный код символа.
Код:
QDesktopServices::openUrl(QUrl(new_path).toEncoded());
Записан
sLiva
Гость
« Ответ #3 : Июнь 02, 2009, 21:38 »

Код:
QDesktopServices::openUrl(QUrl(new_path).toEncoded());

Данный вызов не пройдет т.к. toEncoded() возвращает QByteArray

URL по определению воспринимает только латинский алфавит. Все остальное должно быть закодировано в форму %XX где XX это шестнадцатиричный код символа.

Ничего не нужно руками перекодировать, QUrl сам все сделает  Улыбающийся

сейчас на примере проверил все прекрасно вызывается:
Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

    QString path = QObject::tr("C:/Users/sLiva/Desktop/Дипломный проект");
    QDesktopServices::openUrl(QUrl("file:///" + path));

    Widget w;
    w.show();
    return a.exec();
}



Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Июнь 02, 2009, 22:05 »

Пробуй так:

Код
C++ (Qt)
QString new_path = QCoreApplication::applicationDirPath()+tmp;
QDesktopServices::openUrl(QUrl::fromLocalFile(new_path));
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Anna Maria
Гость
« Ответ #5 : Июнь 03, 2009, 08:20 »

Спасибочки большущее за ответы))
Все работает))
Пойду спрошу еще, как мне статически собрать проект Непонимающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.095 секунд. Запросов: 23.