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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章