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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: addArgument и кириллица  (Прочитано 6773 раз)
cresta
Гость
« : Июнь 30, 2007, 01:55 »

Здравствуйте.
Помогите с аргументами в командной строке.

Запускаю процесс и указываю путь к файлу

Код:
 QString     fName = tr("/mnt/win_e/video/клип.avi");
 mPlayer = new QProcess (this);
 mPlayer->addArgument("mplayer");
 mPlayer->addArgument("--input /root/.mplayer/input.conf");
 mPlayer->addArgument( fName.ascii() );
 mPlayer->start();


процесс запускается (возвращается true и можно определить его pid), но клип не воспроизводится.

Если переименовать клип.avi в clip.avi, то все шикарно запускается и работает.

Как передать в ком. строку имя файла в кириллице? Пробовал кроме ascii также latin1(),  но также безуспешно.

PS.
QT 3.4.3

PPS.
Из консоли плеер воспроизводит любое имя файла.

Спасибо.
Записан
Sergeich
Гость
« Ответ #1 : Июнь 30, 2007, 10:44 »

Мля! Сто раз уже говорили!
Код:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R") );
QString     fName = "/mnt/win_e/video/клип.avi";
mPlayer = new QProcess (this);
mPlayer->addArgument("mplayer");
mPlayer->addArgument("--input /root/.mplayer/input.conf");
mPlayer->addArgument( fName );
mPlayer->start();
Записан
vaprele07
Гость
« Ответ #2 : Июнь 30, 2007, 12:24 »

пользуй системную локаль: QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
Записан
Разуев Максим
Гость
« Ответ #3 : Июнь 30, 2007, 15:12 »

Так же можно QString::fromLocal8Bit(). Самый простой вариант.
Записан
cresta
Гость
« Ответ #4 : Июль 01, 2007, 03:38 »

Спасибо всем. Все способы работают.


 Ещё один вопрос по addArgument.

запускаю из консоли (linux) процесс mplayer и указываю ему параметры ком.строки:

mplayer -ontop -xy 800 'filename'

mplayer запускается в соответствие с параметрами командной строки: поверх всех окон и с шириной окна 800 пикселей (высота автоматически подстраивается в соответствие с aspect ratio).

Теперь хочу сделать также, но программно:

Код:
        mPlayer = new QProcess (this);
        mPlayer->addArgument("mplayer");
        mPlayer->addArgument("-ontop");
        mPlayer->addArgument("-xy 800");
        mPlayer->addArgument( currFilePath );
       
        //проверка добавленых аргументов - всё на месте, и -ontop, и -xy 800
        QStringList list = mPlayer->arguments();
        for ( int i=0; i < list.size(); i++ ){
            qDebug ( list[i] );
        }
        mPlayer->start();

       
В результате выполнения этого кода mplayer просто не запускается. В чем тут проблема?
Если закомментировать строку mPlayer->addArgument("-xy 800");, то всё прекрасно запускается и работает. Вот только размер окна устанавливается в соответствие с дефолтным размером изображения.
А мне крайне желательно, чтобы устанавливалась определенная ширина окна - 800 пикселей.

Как победить эту проблему?
Спасибо.
Записан
Sergeich
Гость
« Ответ #5 : Июль 01, 2007, 07:05 »

Странно это все... Попробуй
Код:
mPlayer->addArgument("-xy");
mPlayer->addArgument("800");
Записан
cresta
Гость
« Ответ #6 : Июль 01, 2007, 17:13 »

Хм, действительно, так работает...
Хотя по логике это один ключ, и должен был бы записываться одной строкой.

Спасибо за помощь.
Записан
Steven_Orko
Гость
« Ответ #7 : Июль 02, 2007, 08:40 »

Цитата: "cresta"

Хотя по логике это один ключ, и должен был бы записываться одной строкой.
Спасибо за помощь.

Вообще-то в Ассистенте про это написано!!! Там не сказано, что надо передавать ключи с их значениями. Там просто передаются аргументы-параметры строки запуска...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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