简体   繁体   English

使用Qt在linux终端上编写命令

[英]Writing commands on linux terminal using Qt

I'm trying to get Qt creator to print a user input by using a push button on an UI into the terminal. 我试图通过使用UI上的按钮进入终端来让Qt创建者打印用户输入。 As of now, the code is executable on the terminal via human input. 截至目前,代码可通过人工输入在终端上执行。 Here is the code: 这是代码:

  void MainWindow::on_pushButton_clicked()
{
    QProcess::execute("/catkin_ws/devel/lib/submodbus");

    system("cd catkin_ws/devel/lib/submodbus");
    system("./submodbus_node");

}

Current output when using the code 使用代码时的当前输出

Output via human input 通过人工输入输出

The versions i'm running on are: -Ubuntu 16.04 -QT Creator 3.5.1 我正在运行的版本是:-Ubuntu 16.04 -QT Creator 3.5.1

system can't change the current directory globally. system无法全局更改当前目录。 but could use like this: 但可以像这样使用:

system("cd /catkin_ws/devel/lib/submodbus && ./submodbus_node");

or using QProcess::setProgram with QProcess::setWorkingDirectory 或者使用QProcess :: setProgramQProcess :: setWorkingDirectory

QProcess p;
p.setProgram("submodbus_node");
//p.setArguments(QStringList()<<args); // if you need
p.setWorkingDirectory("/catkin_ws/devel/lib/submodbus");
p.start();

or QDir::setCurrent QDir :: setCurrent

QDir::setCurrent("/catkin_ws/devel/lib/submodbus");
QProcess::startDetached("submodbus_node");

Test demo, create three files in the parent directory: 测试演示,在父目录中创建三个文件:

#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();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM