Debug Error! QCoreApplication::sendEvent:

 Debug Error!

Program: Qt5Cored.dll
Module: 5.6.3
File:  qglobal.cpp
Line: 3026

ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 1f71954ef40. Receiver '' (of type 'QApplication') was created in thread 1f719459d20", file kernel qcoreapplication.cpp, line 568

没有创建线程,偶现了一次。原因暂时未知;

复现问题:

在Qt控制台程序中调用窗口模块,然后直接关闭控制台导致程序报错

常见原因有:1. 关闭顺序错误Qt程序关闭顺序应该是先关闭所有的窗口,然后再关闭应用对象,最后退出主事件循环。直接在主线程中退出,没有正确关闭窗口,会导致错误。

2. 应用对象被销毁关闭控制台会终止主线程,导致应用对象比窗口先被销毁。子窗口的父对象销毁会导致错误。应该先关闭所有窗口,再终止主线程。

3. 事件循环退出关闭控制台会使主线程退出,事件循环结束,还未处理的窗口事件会失败。应该先退出循环,再关闭控制台。

4. 资源被释放关闭控制台释放了窗口需要的资源,如界面、缓冲等。窗口操作会崩溃。要先关闭窗口,再释放资源。

总结为:1. 关闭所有窗口
2. 退出主事件循环
3. 关闭应用对象
4. 停止主线程

你可能感兴趣的:(qt,c++)