当前位置: 首页 > backend >正文

【Qt】QObject::startTimer: Timers cannot be started from another thread

QTimer对象的 start 函数调用必须和创建QTimer对象是同一个线程。

#include "QtTimerTest.h"
#include <QDebug>QtTimerTest::QtTimerTest(QWidget *parent): QMainWindow(parent),m_timer(nullptr),m_timerThread(nullptr), m_workingThread(nullptr)
{ui.setupUi(this);m_timer = new QTimer;connect(m_timer, &QTimer::timeout, this, &QtTimerTest::slot_timeOut);m_workingThread = new WorkingThread(m_timer);m_workingThread->start();
}QtTimerTest::~QtTimerTest()
{}void QtTimerTest::slot_timeOut()
{qDebug() << "timer thread id : " <<  QThread::currentThreadId();
}
#include "WorkingThread.h"
#include <QDebug>WorkingThread::WorkingThread(QTimer* timer):m_timer(timer)
{}void WorkingThread::run()
{qDebug() << "WorkingThread::run() thread id : " << QThread::currentThreadId();if (nullptr != m_timer){m_timer->start(1000);}
}

如果 QTimer 对象和start()函数处于同一个线程则不会有问题

http://www.xdnf.cn/news/16891.html

相关文章:

  • 考研复习-计算机组成原理-第二章-数据的表示和运算
  • Kazam产生.movie.mux后恢复视频为.mp4
  • 第三章-提示词-高级:开启智能交互新境界(13/36)
  • Steam饥荒联机版多人服务器搭建全解析 -- 阿里云Linux系统构建云服务器
  • MPLS LSP
  • Mysql深入学习:慢sql执行
  • C语言基础03——数组——习题
  • 时序论文44 | TwinsFormer:通过两个交互组件重构时间序列内在依赖关系
  • 14. 最长公共前缀
  • 8-verilog-串口接收与发送模块
  • docker 可用镜像列表(长期免费)
  • 嵌入式硬件篇---Openmv
  • Java 高频面试考点(下)
  • 【MySQL安全】什么是SQL注入,怎么避免这种攻击:前端防护、后端orm框架、数据库白名单
  • ELECTRICAL靶机
  • SQL157 更新记录(一)
  • Java企业级应用性能优化实战
  • ABAP SQL更新DB小技巧 WITH INDICATORS
  • W3D引擎游戏开发----从入门到精通【10】
  • 第二节 YOLOv5参数
  • 在 macOS 上通过 Docker 部署DM8 (ARM 架构)
  • 团队独立思考的力量
  • 2025-0803学习记录21——地表分类产品的精度验证
  • MySQL存储过程和触发器
  • 【网络安全】日志文件格式
  • 「源力觉醒 创作者计划」_文心大模型4.5系列开源模型, 从一行代码到一个生态:聊聊开源战略那些事儿,顺便扯扯文心大模型 4.5 的使用心得
  • 题解:P4447 [AHOI2018初中组] 分组
  • ospf综合
  • NX947NX955美光固态闪存NX962NX966
  • C++ STL 组件及其关系:从模块化设计到图形化展示