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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Имя файла при drag-drop  (Прочитано 3094 раз)
cresta
Гость
« : Август 04, 2007, 14:55 »

Тащу на диалог файл например TextFile #1.txt, а в dropEvent получаю имя TextFile %231.txt.
Файл File %23.txt превращается в File %%2523.txt
Как пофиксить проблему?
Записан
SABROG
Гость
« Ответ #1 : Август 04, 2007, 15:25 »

%23 это HEX код символа "#"

Скорее всего Qt пытается перекодировать некоторые символы как это делает браузер с русским языком в гиперссылках. Должна быть функция обратного преобразования, наверно стоит посмотреть в сторону класса QUrl.
QString QUrl::fromPercentEncoding ( const QByteArray & input )   [static]
Записан
cresta
Гость
« Ответ #2 : Август 04, 2007, 19:04 »

QUrl::fromPercentEncoding в qt 3.3 нет, но методом QUrl::decode сумел восстановить данные.

Код:
    void Gui::dropEvent(QDropEvent* event){
        QString format = event->format ( 0 );
        QString encodedString = event->encodedData (format);
        QUrl::decode(encodedString);
        qDebug(encodedString);

        QStringList list;
        if (encodedString.left(5) = "file:"){
            encodedString.replace("file:", "", FALSE);
            list = QStringList::split('\n', encodedString, FALSE);
            playList->appendList(list);
        }
    }


Спасибо за наводку.
Записан
SABROG
Гость
« Ответ #3 : Август 06, 2007, 17:48 »

Щас глянул, на самом деле надо использовать QTextDrag::decode или QUri::decode/decodeLocalFiles
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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