我正在尝试让 Qt Creator 通过使用 UI 上的按钮将用户输入打印到终端中。截至目前,该代码可通过人工输入在终端上执行。这是代码:
void MainWindow::on_pushButton_clicked()
{
QProcess::execute("/catkin_ws/devel/lib/submodbus");
system("cd catkin_ws/devel/lib/submodbus");
system("./submodbus_node");
}
使用代码时的当前输出
通过人工输入输出
我正在运行的版本是: -Ubuntu 16.04 -QT Creator 3.5.1
最佳答案
system
无法全局更改当前目录。但可以这样使用:
system("cd /catkin_ws/devel/lib/submodbus && ./submodbus_node");
或使用 QProcess::setProgram与 QProcess::setWorkingDirectory
QProcess p;
p.setProgram("submodbus_node");
//p.setArguments(QStringList()<<args); // if you need
p.setWorkingDirectory("/catkin_ws/devel/lib/submodbus");
p.start();
QDir::setCurrent("/catkin_ws/devel/lib/submodbus");
QProcess::startDetached("submodbus_node");
测试demo,在父目录下创建三个文件:
#include <QApplication>
#include <QProcess>
#include <QDir>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
system("cd ../ && touch test1.txt");
QProcess p;
p.setProgram("touch");
p.setArguments(QStringList()<<"test2.txt");
p.setWorkingDirectory("../");
p.start();
QDir::setCurrent("../");
QProcess::startDetached("touch test3.txt");
return a.exec();
}
关于c++ - 使用 Qt 在 linux 终端上编写命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53698908/