您的位置:首页 > 移动开发 > Objective-C

QProcess

2014-05-12 00:00 295 查看
QProcess类用于启动另一个外部应用程序,并可与之进行通信。该类的运行方式是异步的。QProcess类在外部进程拥有数据或完成时发送一个信号以通知相关的对象。
QProcess的使用模板如下:
class XXX : public XXXX
{
Q_OBJECT
…
private slots:
void errorHandler(QProcess::ProcessError);
void catchOutput();
void catchError();
void stateMonitor(QProcess::ProcessState newState);
void slotStarted();
void slotFinished(int, QProcess::ExitStatus);
…
private:
QProcess p;
…
};

XXX::XXX(…)
{
…
connect(&p, SIGNAL(started()), SLOT(slotStarted()));
connect(&p, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(slotFinished(int, QProcess::ExitStatus));
connect(&p, SIGNAL(error(QProcess::ProcessError)), SLOT(errorHandler (QProcess::ProcessError)));
connect(&p, SIGNAL(readyReadStandardError()), SLOT(catchError()));
connect(&p, SIGNAL(readyReadStandardOutput()), SLOT(catchOutput()));
…
}

XXX:: slotStarted()
{
qDebug()<<”process has started”;
}

XXX:: slotFinished(int exitcode, QProcess::ExitStatus status)
{
if (exitStatus == QProcess::CrashExit) {
…;
} else if (exitCode != 0) {
…;
} else {
…;
}
}

XXX:: errorHandler(QProcess::ProcessError error)
{
if (error == QProcess::FailedToStart) {
…
}
else if( error == QProcess:: Crashed )
{
…
}
else if( error == QProcess:: Timedout )
{
…
}
else if( error == QProcess:: WriteError )
{
…
}
else if( error == QProcess::ReadError )
{
…
}
else if( error == QProcess:: UnknownError )
{
…
}
}

XXX:: catchError()
{
QByteArray newData = process.readAllStandardError();
…

}

XXX::catchOutput()
{
QByteArray newData = process.readAllStandardOutput();
…
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  signal object class