我正在尝试将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);
}
我错过了什么吗?
答案 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);
}
找不到解释原因......
感谢您的帮助!
干杯,