在移动互联网大发展的今天,桌面软件越来越受冷落,更哪堪不是那么主流的Qt 桌面开发。
近日开发一款用于某自动化的软件,用到了读取stdout 的管道通信,发现读取Qt 输出到stdout 的信息总是断流,debug 的时候发现在Qt creator 中的信息又是完整的。显然Qt 程序输出到控制台的数据不全。
尝试用endl, fflush(stdout)刷新缓冲区解决,但是并没有什么卵用。
最终发现是Qt 的工程属性问题,要想保障输出到控制台,除了在工程文件中添加:
CONFIG += console
以上设置只能保障可以输出到控制台,但不能保障打印信息的完整!!!
我们还需要使能 项目->运行设置->运行->"Run in terminal" 选项。
然后重新构建项目,并且需要重新release 软件包,刚才的运行设置会保存至setting.ini文件。
如此这般,才能保障Qt 输出到控制台的打印是完整的。