connect(this, SIGNAL(readyReadStandardOutput()), this, SLOT(slot_bar()));
将信号readyReadStandardOutput()连接槽函数slot_bar()后,调用QProcess执行外部程序。
process->start("程序地址");
对应槽函数
void slot_bar()
{
qDebug()<<QString::fromLocal8Bit(process->readAllStandardOutput());
}
在这里我调用的程序是一个py文件,每print()一行触发一次信号,结果并不是实时输出结果,而是在程序结束后一并输出。
解决办法是在py文件的每一行print()后面添加一行代码
sys.stdout.flush()
因为python中print()一次并不是立即打印,而是要等缓冲区满了再打印,用这种办法强制刷新缓冲区后,可以立即触发信号。