QProcess 类用于启动外部程序并与它们进行通信。
官方调用例子:
QObject *parent;
...
QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments << "-style" << "fusion";
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);
可以看到最终是调用start()函数执行外部程序。
下面分析下start()函数的调用。
void start(const QString &program, const QStringList &arguments, OpenMode mode = ReadWrite);
可见最后一个参数是默认参数。
void QProcess::start(const QString &program, const QStringList &arguments, OpenMode mode)
{
Q_D(QProcess);
if (d->processState != NotRunning) {
qWarning("QProcess::start: Process is already running");
return;
}
if (program.isEmpty()) {
d->setErrorAndEmit(QProcess::FailedToStart, tr("No program defined"));
return;
}
d->program = program;
d->arguments = arguments;
d->start(mode);
}
void QProcess::start(OpenMode mode)
{
Q_D(QProcess);
if (d->processState != NotRunning) {
qWarning("QProcess::start: Process is already running");
return;
}
if (d->program.isEmpty()) {
d->setErrorAndEmit(QProcess::FailedToStart, tr("No program defined"));

本文详细解析了Qt中的QProcess类,介绍了如何使用该类启动外部程序并与其通信。通过官方示例展示了构造方法及start()函数的调用流程,并深入探讨了start()函数内部实现,特别是在Linux系统下的具体实现细节。
最低0.47元/天 解锁文章

948

被折叠的 条评论
为什么被折叠?



