QObject::killTimer: timers cannot be stopped from another thread
出現這個錯誤的原因在於在次線程中執行主線程對象的一些操作引起的
可以這樣修改
如果次線程需要更新主線程對象狀態,需要發送消息,主線程對象接收后處理而不能在此線程中直接操作
QT定時器非常好,只要注意跨線程問題
使用定時器的注意事項:
1. QT定時器線程相關的使用注意事項:
1> 不能誇線程啟動定時器和停止定時器
1> 不能誇線程啟動一個定時器關聯的對象,但在另一個線程釋放(析構)此和定時器關聯的對象(相當於1>的情況不能在其他線程停止定時器).
qWarning(“QObject::killTimers:timers cannot be stopped from another thread”);
也就是定時器相關的邏輯和對象只能用在一個線程中.
因為QT的定時器有內部的數據結構來關聯定時器相關邏輯.
否則:啟動定時器的線程不能刪除定時器,而定時器關聯的對象已經不存在,那么下次定時器事件來時會崩潰.
