visual studio 下开发的qt窗口程序,开启了控制台 (/SUBSYSTEM:CONSOLE),有时候窗口界面会卡住,然后在控制台ctrl +c之后可以继续正常运行,是什么原因呢?
/SUBSYSTEM:CONSOLE的开启
在属性页的系统-子系统中中设置:
运行时界面卡住
有时候运行QT程序会在随机时间卡住,然后经排查发现,在终端使用ctrl+c终端可以恢复:
这个问题可能是由于在使用 /SUBSYSTEM:CONSOLE 时,程序在启动时创建了一个控制台窗口,控制台窗口在某些情况下会获取焦点并导致窗口界面被卡住。这种情况下,通过按 ctrl + c 组合键中断控制台程序,可以重新获得窗口界面的控制权。
如果您的程序是一个窗口应用程序,建议将项目属性中的 "SubSystem" 设置为 "Windows",这将防止程序启动时创建控制台窗口,并将其设置为纯窗口应用程序。在 Visual Studio 中,可以在项目属性的 "Linker" 选项卡中找到 "System" 部分,并将 "Subsystem" 设置为 "Windows"。
如果您需要使用控制台窗口来调试程序,可以在需要使用控制台窗口时启动它,而不是在整个程序生命周期中一直存在。可以使用 Win32 API 函数 AllocConsole() 和 FreeConsole() 来分别创建和释放控制台窗口。
OpenAI.