正确设置qstring到qprocess

时间:2016-03-22 14:02:40

标签: c++ qt ros

我正在尝试将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);
}

我错过了什么吗?

1 个答案:

答案 0 :(得分: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);
}

找不到解释原因......

感谢您的帮助!

干杯,