Qt5Gui!QRasterPaintEngine::penChanged QT程序崩溃

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

https://www.cnblogs.com/bclshuai/p/11380657.html

1.问题描述

用QT 编写股票分析程序,总是偶然出现崩溃,崩溃之后对dump分析错误位置在 Qt5Gui!QRasterPaintEngine::penChanged

WARNING: Stack unwind information not available. Following frames may be wrong.
01a4c620 644ee689 01a4c890 07f28d08 01a4c890 Qt5Gui!QRasterPaintEngine::penChanged+0xc
01a4c63c 0f539e98 00000005 00000005 0000032e Qt5Widgets!QWidget::event+0x509
01a4c66c 0f533fb6 645b5490 01a4c890 0a5ccfb8 Qt5Gui!QRasterPaintEngine::toNormalizedFillRect+0x1b8
01a4c670 645b5490 01a4c890 0a5ccfb8 03c17508 Qt5Gui!QRasterPaintEngine::fillRect+0xa6
01a4c698 67049bfa 0a5ccfb8 01a4c890 0a5ccfb8 Qt5Widgets!QLineEdit::event+0x2a0
01a4c6c8 644d2506 644d251b 01a4c890 0a5ccfb8 Qt5Core!QCoreApplicationPrivate::sendThroughApplicationEventFilters+0x8a
01a4c6cc 644d251b 01a4c890 0a5ccfb8 67043c60 Qt5Widgets!QApplicationPrivate::notify_helper+0xf6
01a4c6e4 644d18fd 0a5ccfb8 01a4c890 03c09ce8 Qt5Widgets!QApplicationPrivate::notify_helper+0x10b
01a4c730 6453ffc4 0f4d6b50 00000002 01a4ca34 Qt5Widgets!QApplication::notify+0x16fd
01a4c74c 0f534266 01a4c780 17a60c78 01a4ca34 Qt5Widgets!QWindowsStylePrivate::devicePixelRatio+0x224
01a4ca78 0f57767d fffffffb fffffffb 01a4cad0 Qt5Gui!QRasterPaintEngine::fillRect+0x66
01a4ca9c 644f3042 0ac6b114 01a4cad0 01a4cadc Qt5Gui!QRegion::operator^=+0x52d
01a4cb5c 644edf8e 0ac6b114 0a581384 00000002 Qt5Widgets!QWidgetPrivate::paintSiblingsRecursive+0x352
00000000 00000000 00000000 00000000 00000000 Qt5Widgets!QWidgetPrivate::drawWidget+0x96e

 2.问题分析

界面QGUI崩溃,没有指向具体的代码行,排除空指针等原因,考虑界面程序只能单线程访问,多线程访问,或者多个定时器定时控制访问界面,会导致界面崩溃。

3.解决办法

在有多线程或者定时器的场景中,使用信号槽去连接信号数据signalAddData和界面操作函数AddDataToCaculate,通过信号槽QueuedConnection队列属性去设置信号槽连接,达到队列的目的。

connect(this, &DaPanMonitor::signalAddData, this, &DaPanMonitor::AddDataToCaculate,Qt::QueuedConnection);

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html
原文地址:https://www.cnblogs.com/bclshuai/p/15463591.html