QStringList用来设置外部程序的参数。也可以通过setArguments()来设置(需要在调用start之前调用)。
QString program = "./path/to/program"; //用不用双斜杠?
QStringList arguments;
arguments << "-style" << "fusion"; //不需要空格?
QProcess *myProcess = new QProcess(this);
myProcess->start(program,arguments);
程序开始运行以后,发出started()信号。QProcess可把一个process当做一个顺序IO来对待,因此可以对其读写,即write(), read(), readLine()以及getChar()。process退出后,发出finished()信号。finished信号的参数包括exitCode和exitStatus,分别用exitCode()和exitStatus()来获得。process退出后,仍然可以继续读取缓冲区。
QProcess可以处理相对路径和绝对路径。建议采用绝对路径。例如:
QString program_path = QCoreApplication::applicationDirPath();
QString program = program_path + "./program";
程序可以不用扩展名exe,这样可以实现linux和windows平台无关特性。此外,可以全部采用/,QProcess会在windows上自动改成\。
QProcess可以读取standard output和standard error的输出。如果有输出了,会发出readyReadStandardOutput()和readyReadStandardError()信号,可以使用readAllStandardOutput()或readAllStandardError()来读取全部数据。