将 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);
}
找不到任何解释为什么...
谢谢你的帮助!
干杯,
我正在尝试将 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);
}
找不到任何解释为什么...
谢谢你的帮助!
干杯,