QProcess可以运行一个应用程序,并可获取其标准输出的内容。
一、示例代码
main.cpp
#include <QCoreApplication>
#include <QObject>
#include <QProcess>
#include <QDebug>
#include "Printer.h"
int main(int argc, char *argv[])
{
int ret = 0;
QCoreApplication a(argc, argv);
QProcess *caller = new QProcess();
Printer *printer = new Printer( caller );
caller->start("dir", QStringList() << "D:\\" );
QObject::connect( caller, SIGNAL(finished(int)), printer, SLOT(print(int)) );
ret = a.exec();
delete printer;
delete caller;
return ret;
}
printer.h
#ifndef PRINTER_H
#define PRINTER_H
#include <QObject>
#include <QProcess>
class Printer : public QObject
{
Q_OBJECT
public:
Printer();
Printer( QProcess *obj );
virtual ~Printer();
public slots:
void print(int);
private:
QProcess *m_caller;
};
#endif // PRINTER_H
printer.cpp
#include "Printer.h"
#include <QDebug>
Printer::Printer()
{}
Printer::Printer(QProcess *obj):m_caller( obj )
{}
Printer::~Printer()
{
delete m_caller;
}
void Printer::print(int)
{
QString data = m_caller->readAllStandardOutput();
QStringList list = data.split("\n");
for( QString item : list )
{
qDebug() << item;
}
qDebug()<<endl;
}
二、运行结果
三、参考链接
https://blog.csdn.net/sinat_34130812/article/details/79916461
https://www.cnblogs.com/mathyk/p/10141572.html(阻塞式解决方案)
https://zhuanlan.zhihu.com/p/110544668