一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

  出现这个错误的原因在于在次线程中执行主线程对象的一些操作引起的。

可以这样修改:

  如果次线程需要更新主线程对象状态,需要发送消息,主线程对象接收后处理而不能在此线程中直接操作。

  QT定时器非常好,只要注意跨线程问题

QT定时器线程相关的使用注意事项:

  • 不能夸线程启动定时器和停止定时器
  • 不能夸线程启动一个定时器关联的对象,但在另一个线程释放(析构)此和定时器关联的对象(相当于1>的情况不能在其他线程停止定时器).

qWarning(“QObject::killTimers:timers cannot be stopped from another thread”);

也就是定时器相关的逻辑和对象只能用在一个线程中.

因为QT的定时器有内部的数据结构来关联定时器相关逻辑.

否则:启动定时器的线程不能删除定时器,而定时器关联的对象已经不存在,那么下次定时器事件来时会崩溃.

posted on 2021-06-23 10:38  一杯清酒邀明月  阅读(2987)  评论(0编辑  收藏  举报