QT4 主程序调用外部exe会让主程序阻塞怎么办
时间: 2023-08-05 13:07:45 浏览: 79
可以使用 Qt 的 QProcess 类来解决这个问题。QProcess 可以在一个新的进程中执行外部程序,并且可以异步地与该进程通信,从而不会阻塞主程序。
以下是一个简单的示例代码:
```cpp
QProcess process;
process.start("external.exe"); // 启动外部程序
process.waitForFinished(); // 等待程序执行完成
QString output = process.readAll(); // 获取程序输出
```
在上面的代码中,我们首先创建了一个 QProcess 对象,然后使用 start() 函数启动了外部程序。然后,我们使用 waitForFinished() 函数等待程序执行完成,并使用 readAll() 函数获取程序输出。
如果你需要在程序执行时获取程序输出,可以使用 readyRead() 信号和 readAllStandardOutput() 函数来实现。
```cpp
QProcess process;
process.start("external.exe"); // 启动外部程序
connect(&process, &QProcess::readyReadStandardOutput, this, [=]() {
QString output = process.readAllStandardOutput(); // 获取程序输出
// 处理程序输出
});
```
在上面的代码中,我们使用 connect() 函数连接了 readyReadStandardOutput() 信号和一个 lambda 函数。每当外部程序输出数据时,这个 lambda 函数就会被调用,并且可以使用 readAllStandardOutput() 函数获取程序输出。
阅读全文