C++ 如何使用Qt5(C+;+;)中的按钮运行和关闭roslaunch
我想构建一个带有几个按钮的UI来启动ros文件并关闭启动文件。“我被其他人的QProcess卡住了,”他说。 我进行了几次讨论:C++ 如何使用Qt5(C+;+;)中的按钮运行和关闭roslaunch,c++,qt,qt5,ros,C++,Qt,Qt5,Ros,我想构建一个带有几个按钮的UI来启动ros文件并关闭启动文件。“我被其他人的QProcess卡住了,”他说。 我进行了几次讨论: 他们都没有成功。 这是我尝试过的最新代码(当我按下按钮时,结果是什么也没有运行) 如果您可以使用按钮成功启动节点,那么按下按钮关闭节点的一种方法是向这些节点发送一条关于特定主题的消息,例如:Bool类型的“/system/shutdown”,节点正在侦听此主题,当消息到达时,节点会自动关闭向进程发送SIGINT信号的建议解决方案到底有什么问题?它根本不起作用
如果您可以使用按钮成功启动节点,那么按下按钮关闭节点的一种方法是向这些节点发送一条关于特定主题的消息,例如:Bool类型的“/system/shutdown”,节点正在侦听此主题,当消息到达时,节点会自动关闭向进程发送
SIGINT
信号的建议解决方案到底有什么问题?它根本不起作用。我第一次试着用下面的代码打电话给roslaunch,但什么也没发生。当我点击按钮时,界面突然出现了。谢谢你的回答。我想我只是在语法上有点错误。但是我发现使用gnome ternimal来运行一些roslaunch,我稍后会尝试一下,以获得您的建议
QString program = "roslaunch jackal_gazebo jackal_world.launch";
QProcess *myProcess = new QProcess(this);
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("launch","/opt/ros/melodic/share/jackal_gazebo");
myProcess->setProcessEnvironment(env);
myProcess->start(program);
myProcess->waitForStarted(-1);