Russian Qt Forum

Qt => Общие вопросы => Тема начата: SASA от Апрель 19, 2011, 09:55



Название: [решено] Получить имя файла из QDropEvent.
Отправлено: SASA от Апрель 19, 2011, 09:55
Не могу получить корректное имя файла с русскими буквами при перетаскивании его на форму.
Пытаюсь получить его из QUrl
Код
C++ (Qt)
void Form::dropEvent( QDropEvent *event )
{
if (event && event->mimeData()->hasUrls())
{
QUrl url = event->mimeData()->urls().first();
QString fileName = url.toLocalFile();
QMessageBox::information(this,"",fileName);
}
}
Под виндой все хорошо. Но под линухом (МСВС) в fileName вместо русских букв краказяблики. Кодировка KOI8-R.


Название: [РЕШЕНО] Получить имя файла из QDropEvent.
Отправлено: SASA от Июнь 27, 2011, 10:37
Проблему решил перекодированием "чистого" содержания миме даты.

Код:
const QMimeData * mime = event->mimeData();
QTextCodec* codec = QTextCodec::codecForLocale();
QString str = codec->toUnicode(mime->data("text/uri-list"));
QMimeData convertedMimeData;
convertedMimeData.setData("text/uri-list",str.toUtf8());
Дальше работаем convertedMimeData.