将 qstring 正确设置为 qprocess

set qstring to qprocess properly

我正在尝试将 QString 设置为 Qprocess 以在 Qt 中执行它。 我的问题是我无法让它工作,尽管从 QProcess Documentation 看起来很好。 我想在按下按钮时执行此操作,所以我的代码首先看起来像下面这样(竖起大拇指,该过程是一个 ROS 命令):

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

但这没有用。看起来某事正在从 LineEdit 获取 QString。 只是为了检查我的命令是否有效,我尝试将命令设置为单行命令并且有效:

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

我是不是漏了什么??


这已通过删除空格并添加 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);
}

找不到任何解释为什么...

谢谢你的帮助!

干杯,