首页 > 解决方案 > Windows 10 1809 更新后,Qt Creator 不再在应用程序输出窗口中显示控制台输出

问题描述

我正在使用 Qt 5.2.1 和 Qt Creator 4.5.0 在调试中运行应用程序。几个月以来,这一直很好,控制台输出显示在“应用程序输出”窗口中。我今天早上将 1809 更新应用到 Windows,现在我只在输出窗口中看到异常详细信息,没有其他内容。

有趣的是,当我“在终端中运行”时,输出显示在命令窗口中。如果我“运行”(ctrl-R)应用程序,它也会显示出来。当我使用更高版本的 Qt 框架(在我的例子中为 5.12.1)运行应用程序的测试时,它似乎也可以。

有没有其他人经历过这个?我什至不确定从哪里开始解决问题。

编辑:更多信息。我查看了 Qt 5.2.1 源代码,发现如果控制台窗口附加到进程(如您所料,例如,如果您选择了“在终端中运行”选项),qDefaultMessageHandler 不会输出消息。如果我在我的应用程序开始时调用 FreeConsole(),那么输出会像以前一样出现在 Application Output 窗口中。这表明对 Windows 的更新导致将控制台窗口分配给调试进程。

标签: qtqt-creator

解决方案


这可能是 Qt 5.2 中的一个错误,特别是如果它适用于更高的 Qt 版本。

正确的答案是:升级到更高版本的 Qt。原因是 Qt 5.2 支持在 3 年多前就结束了。

您应该使用当前支持的版本之一:5.9.8、5.12.4 或 5.13.0。

请注意,5.9 和 5.12 是 LTS,但 5.9 支持将于明年结束。因此,如果您不想每 6 个月升级一次,那么 5.12 似乎是最合适的。

编辑

如果您因任何原因无法更新 Qt 的生产版本,您至少可以在您的系统上更新 Qt Creator 并更新您的 Qt 开发版本。

假设您在编写和测试代码时在计算机上使用 Qt 5.9 或 5.12。但是为开发循环的任何其他部分(测试、CI、...)和生产保留 5.2.1。

Qt 提供了很好的跨版本兼容性,如果您编写为 5.2 编译的代码,它将在 x >= 2 的任何 5.x 中编译而无需更改。


推荐阅读