QT QProcess使用记录

 在QT creator中,为了在Project中调用.exe应用程序, QT提供了QProcess类,QProcess可以用于完毕启动外部程序,并与之交互通信。

1. 启动外部程序的两种方式

        要启动Process,请将要作为参数运行的程序的名称和命令行参数传递给 start()。参数在 QStringList 中作为单个字符串提供。

QObject *parent;

QString program = "./path/to/Qt/examples/widgets/analogclock";
QStringList arguments;
arguments << "-style" << "fusion";  
QProcess *myProcess = new QProcess(parent);
myProcess->start(program, arguments);

1> 第一种启动方式,一体式:started() 
        void  start(const QString &program, const QStringList &arguments, QIODevice::OpenMode mode = ReadWrite)
        进程是异步启动的,这意味着started()和erroroccurs()信号可能会延迟。调用waitForStarted()以确保进程已经启动(或启动失败),并且已经发出了那些信号。

       外部程序启动后,将随着主程序的退出而退出。

2> 第二种启动方式,分离式:startDetached()

        void QProcess::startDetached(const QString & program, const QStringList & arguments, const QString & workingDirectory = QString(), qint64 * pid = 0)

        在新进程中用setArguments()设置的参数启动由setProgram()设置的程序,并与之分离。成功时返回true;否则返回false。如果调用进程退出,被分离的进程将不受影响地继续运行。

        外部程序启动后,当主程序退出时并不退出。而是继续执行。

2. 其他函数及知识:
waitForStarted() 模块:监督QProcess的开始。
waitForReadyRead() 模块: 直到当前读通道上有新数据可读为止。
waitForBytesWritten() 模块:直到将一个有效负载的数据写入流程。
waitForFinished() 模块: 监督进程结束。

3.注:从主线程(调用QApplication::exec()的线程)调用这些函数可能会导致用户界面冻结。

这个问题应该怎么解决啊???

yH5BAAAAAAALAAAAAAOAA4AAAIMhI+py+0Po5y02qsKADs=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值