QT:正确延时调用,Cannot create children for a parent that is in a different thread.

试图使用线程、定时器,延时执行,会发现十分的麻烦。

这是因为现在代码都涉及到线程,比如主线程中禁止什么允许什么。

如何在QT中延时执行一段代码?

  • 被动调用。比如在resize()中,可以直接使用定时器:

    复制代码
      video_timer = new QTimer(this);
      connect(video_timer, &QTimer::timeout, this, &VideoWidget::onTimeout);
      video_timer->start(1000);
  • 主动调用。比如收到消息,执行操作:

    //第一步
    QMetaObject::invokeMethod(this, "onReplay", Qt::QueuedConnection);

    //第二步
    void VideoWidget::onReplay()
    {
    qDebug() << "================== onReplay";
    QTimer::singleShot(3000, this {
    QMetaObject::invokeMethod(this, "playAction", Qt::QueuedConnection);
    });
    }

相关推荐
(Charon)8 小时前
【C++/Qt】Qt 实现 WebSocket 测试工具:连接、消息收发与通信日志
c++·qt·websocket
恼书:-(空寄8 小时前
PostgreSQL核心特性与高并发系统落地实践
数据库·postgresql
hweiyu008 小时前
Linux命令:nc
linux·运维·服务器
hsjcjh8 小时前
标书自动化攻坚:用Gemini 3.1 Pro镜像官网构建多步推理的智能投标应答流水线(国内实测教程)
运维·服务器·网络
十五年专注C++开发8 小时前
CMake基础: Qt之qt5_wrap_ui
开发语言·c++·qt·ui
东方隐侠安全团队-千里8 小时前
CVE-2026-31431 Copy Fail:Linux 本地提权漏洞原理、影响面与排查修复建议
linux·运维·服务器
BU摆烂会噶8 小时前
【LangGraph】线程级持久化深度实战(PostgreSQL + 重放机制)
数据库·人工智能·python·postgresql·langchain
xxjj998a8 小时前
Laravel4.x:PHP开发新纪元
android·数据库
(Charon)8 小时前
【C++/Qt】Qt 实现 HTTP 测试工具:从请求构思到 GET/POST 实现
c++·qt·http