Qt中有趣的进程任务
Interesting task of the processes in Qt
假设我使用QProcess运行一个控制台应用程序。应用程序运行,显示一些信息,然后等待n秒,显示其他信息。
我当前的代码是:
QProcess * p = new QProcess();
p->start("test.bat");
p->waitForStarted();
p->waitForFinished();
p->readAll();
delete p;
目前我在最后得到了所有的输出,但是我需要做的是得到输出并在它可用时显示它。我该怎么做呢?
您可以连接到readyRead()信号,这样每当有数据要读取时,您将继续读取并显示它,而无需等待进程完成。这在代码方面意味着以下内容:
class Foo : public QObject
{
Q_OBJECT
public:
explicit Foo::Foo(QObject parent = Q_NULLPTR)
: QObject(parent)
{
...
connect(myProcess, SIGNAL(readyRead()), SLOT(handleReadyRead()));
connect(myProcess, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(handleFinished(int, QProcess::ExitStatus)));
connect(myProcess, SIGNAL(error(QProcess::ProcessError)), SLOT(handleError(QProcess::ProcessError)));
myProcess.start("test.bat");
...
}
public slots:
void Foo::handleReadyRead()
{
qDebug() << myProcess.readAll();
}
void Foo::handleFinished(int, QProcess::ExitStatus)
{
// Handle finished
}
void Foo::handleError(QProcess::ProcessError)
{
// Handle error
}
private:
QProcess myProcess;
}
免责声明:将其视为伪代码,因为我没有构建它,但它应该演示使用的概念。
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- WMI检测进程创建事件-c++
- 有没有任务栏API可以立即应用注册表更改
- c++多进程编写一个唯一的文件
- 无法删除EXE崩溃后,即使进程未显示在任务管理器中
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 5 CPU的任务调度N进程
- 任务 ":app:ndkBuild" 执行失败。>进程'Command'完成,退出值为非零 2
- 如何制作进程以及它们执行不同的分配任务,例如使用fork读取文件或写入文件
- 任务管理器如何获取进程的命令行可执行路径
- 使应用程序/服务,以便在任务管理器中尝试结束/终止其进程将导致"Unable to Terminate Process"
- 如何在后台进程上处理来自Windows任务管理器的"End Task"?
- 终止Qt进程:Windows任务管理器在做什么,我没有?
- 防止进程在任务管理器中关闭
- 如何在Windows 7中结合不同进程的任务栏图标
- Qt中有趣的进程任务