2016-03-22 9 views
0

Ich versuche QString auf Qprocess zu setzen, um es in Qt auszuführen. Mein Problem ist, dass ich es nicht funktionieren kann, obwohl es aus der QProcess Documentation in Ordnung scheint. Ich wollte diese in einem Druck auf die Taste tun, so meinen Code sah aus wie die folgenden auf den ersten (Daumen nach oben, ist der Prozess ein ROS Command):qstring auf qprocess richtig setzen

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); 
} 

und das hat nicht funktioniert. Es sieht so aus, als ob sth den QString vom LineEdit holt. Nur um zu überprüfen, ob mein Befehl funktioniert, habe ich versucht, den Befehl als ein Zeilenbefehl zu setzen und es funktionierte:

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); 
} 

ich etwas fehlt Bin ??

+1

Versuchen ohne die hinteren Räume in '“ wifibot_gazebo „', also mit '‚wifibot_gazebo‘'. Wenn ein QStringList vorbei, werden die Argumente durch Leerzeichen automatisch getrennt und mehr Räume Argumente Zugabe führt zu zitieren –

+2

Probiere den vollen Dateipfad des "roslaunch" -Programms – Felix

+0

hi, @Frank habe ich ohne die Leerzeichen als '' wifibot_gazebo '' ausprobiert und es hat auch nicht funktioniert. Felix, auch ohne den Weg von '' roslaunch '' ', funktionierte es für den zweiten Code. Also denke ich nicht, dass es ein Pfadproblem ist. Thx – Vtik

Antwort

0

Dies wurde durch Entfernen der Räume gelöst und eine QString Guss Zugabe, wie folgt aus: warum ...

Danke für die Hilfe sowieso

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); 
} 

keine Erklärung gefunden!

Cheers,