我正在围绕控制台应用程序构建 GUI。我希望能够单击一个按钮来运行控制台应用程序并在 GUI 本身内部显示控制台输出。我怎样才能做到这一点?我在 Linux 中工作。
最佳答案
你也可以试试 QProcess .它提供了一个 Qt 接口(interface)来启动外部进程、读取它们的 I/O 并等待或不等待它们完成。
就您的目的而言,听起来您希望进程异步运行,因此代码可能如下所示:
我的流程启动器.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;
};
主要.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();
}
关于qt - 在 Qt 中异步运行控制台输出和 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600973/