2016-03-22 1 views
0

Я пытаюсь установить QString для Qprocess для его выполнения в Qt. Моя проблема в том, что я не могу заставить ее работать, хотя она кажется прекрасной из QProcess Documentation. Я хотел сделать это в кнопочной прессе, так что мой код посмотрел на первую, как следующие (пальцы вверх, процесс является ROS Command):установить qstring на qprocess правильно

void Viatic_Interface::gazebo_launch_world() 
{ 
    QString program = "roslaunch"; 
    QStringList arguments; 
    arguments << " wifibot_gazebo " << ui->txt_world->text(); 

    QProcess *myProcess = new QProcess(); 
    QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
    myProcess->setProcessEnvironment(env); 
    myProcess->start(program, arguments); 
    myProcess->waitForStarted(-1); 
} 

и это не сработало. Похоже, sth собирается получить QString из LineEdit. Просто, чтобы проверить, если моя команда работает, я попытался установить команду в качестве одной команды, и она работала:

void Viatic_Interface::gazebo_launch_world() 
{ 
    QString program = "roslaunch wifibot_gazebo wifibot_gazebo.launch"; 

    QProcess *myProcess = new QProcess(); 
    QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
    myProcess->setProcessEnvironment(env); 
    myProcess->start(program); 
    myProcess->waitForStarted(-1); 
} 

Я пропускаю что-то ??

+1

Try без хвостовых пробелов в '» wifibot_gazebo «', то есть с '„wifibot_gazebo“'. При передаче QStringList, аргументы разделяются пробелами автоматически и добавить больше пространства для аргументов приводит к процитировать –

+2

Попробуйте с полным файловым дорожкой программы «roslaunch» – Felix

+0

привет, @Frank я пробовал без пробелов как «wifibot_gazebo», и это тоже не сработало. Феликс, даже без пути «roslaunch», ', он работал для второго кода, поэтому я не думаю, что это проблема пути. Thx – Vtik

ответ

0

Эта задача была решена путем удаления пробелов и добавления QString актеров, как это:

void Viatic_Interface::gazebo_launch_world() 
{ 
    QString program = "roslaunch"; 
    QStringList arguments; 
    arguments << "wifibot_gazebo" << (QString)ui->txt_world->text(); 

    QProcess *myProcess = new QProcess(); 
    QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
    myProcess->setProcessEnvironment(env); 
    myProcess->start(program, arguments); 
    myProcess->waitForStarted(-1); 
} 

не нашли объяснения, почему ...

Спасибо за помощь в любом случае!

Приветствия,