在Qt中异步运行控制台输出和GUI

THE*_*TOR 2 console user-interface qt

我正在围绕控制台应用程序构建GUI.我希望能够单击按钮来运行控制台应用程序并在GUI本身内显示控制台输出.我怎么能做到这一点?我在Linux工作.

doc*_*eer 7

您也可以尝试QProcess.它提供了一个Qt接口来启动外部进程,读取它们的I/O并等待或不等待它们完成.

出于您的目的,听起来您希望过程以异步方式运行,因此代码可能如下所示:

myprocessstarter.h:

#include <QObject>
#include <QProcess>
#include <QDebug>


class MyProcessStarter : public QObject
{
    Q_OBJECT
public:
    MyProcessStarter() : QObject() {};
    void StartProcess();
private slots:
    void readStandardOutput();
private:
    QProcess *myProcess;
};
Run Code Online (Sandbox Code Playgroud)

main.cpp中:

#include "myprocessstarter.h"

void MyProcessStarter::StartProcess()
{
    QString program = "dir";
    QStringList arguments;
    // Add any arguments you want to be passed

    myProcess = new QProcess(this);
    connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(readStandardOutput()));
    myProcess->start(program, arguments);
}

void MyProcessStarter::readStandardOutput()
{
    QByteArray processOutput;
    processOutput = myProcess->readAllStandardOutput();

    qDebug() << "Output was " << QString(processOutput);
}

void main(int argc, char** argv)
{
    MyProcessStarter s;
    s.StartProcess();
}
Run Code Online (Sandbox Code Playgroud)