Аргумент не распознается, если передается с помощью QProcess

Мне трудно передать аргумент -vo в mplayer, используя QProcess. Вот минимальный пример:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QString program;
    program = "C:\\mplayer-svn-38008\\mplayer.exe";

    QStringList arguments;
    arguments << "-vo gl" << "C:\\test.mp4"; 

    QProcess *m_process = new QProcess(this);
    m_process->start(program, arguments);
}

Процесс выводит:

Неизвестный параметр в командной строке: -vo gl

использование того же аргумента в оболочке Windows приводит к правильному поведению:

>mplayer -vo gl C:/test.mp4

Кроме того, удаление этого аргумента из QStringList работает. Почему опция -vo распознается из командной строки, а не из QProcess?


person Mark    schedule 25.01.2018    source источник


Ответы (1)


Вы должны разделить каждый аргумент, разделенный пробелом:

arguments << "-vo"<< "gl" << "C:\\test.mp4"; 
person eyllanesc    schedule 25.01.2018
comment
Ааа, это, наконец, решает просто опечатку. Как глупо не проверить с помощью отладчика, что передано в arguments. - person ; 25.01.2018
comment
Что ж, я проверил с помощью отладчика, и строка вывода показалась мне правильной: -vo gl, C:\\test.mp4 - person Mark; 25.01.2018
comment
Как я должен поймать опечатку? - person Mark; 25.01.2018
comment
@Mark Нет, опечатка в том, что вы ошиблись, написав это, но это то, что Qt не документирует. - person eyllanesc; 25.01.2018