Russian Qt Forum

Qt => Общие вопросы => Тема начата: Anna Maria от Июнь 02, 2009, 10:45



Название: Открыть папку в проводнике с кириллицей в названии
Отправлено: 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));
 

Если название папки латиницей, папка замечательно открывается. Если же кириллицей - не работает. :(
Как исправить?


Название: Re: Открыть папку в проводнике с кириллицей в названии
Отправлено: sLiva от Июнь 02, 2009, 15:24
Попробуй установить кодек для tr

Код
C++ (Qt)
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
 


Название: Re: Открыть папку в проводнике с кириллицей в названии
Отправлено: White Owl от Июнь 02, 2009, 20:32
URL по определению воспринимает только латинский алфавит. Все остальное должно быть закодировано в форму %XX где XX это шестнадцатиричный код символа.
Код:
QDesktopServices::openUrl(QUrl(new_path).toEncoded());


Название: Re: Открыть папку в проводнике с кириллицей в названии
Отправлено: sLiva от Июнь 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();
}





Название: Re: Открыть папку в проводнике с кириллицей в названии
Отправлено: pastor от Июнь 02, 2009, 22:05
Пробуй так:

Код
C++ (Qt)
QString new_path = QCoreApplication::applicationDirPath()+tmp;
QDesktopServices::openUrl(QUrl::fromLocalFile(new_path));


Название: Re: Открыть папку в проводнике с кириллицей в названии
Отправлено: Anna Maria от Июнь 03, 2009, 08:20
Спасибочки большущее за ответы))
Все работает))
Пойду спрошу еще, как мне статически собрать проект ???