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

相关推荐
cui_ruicheng4 小时前
MySQL(四):数据类型与字段设计
数据库·mysql
皮皮学姐分享-ppx5 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
HackTwoHub5 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
QWEDDRFTG6 小时前
C13/C19怎么选?服务器电源线电流与接口选型技巧
服务器
闪电悠米7 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
Jun6267 小时前
QT(12)-制作lib库
开发语言·qt
DIY源码阁8 小时前
JavaSwing航班订票管理系统 - MySQL版
数据库·mysql
QWEDDRFTG8 小时前
服务器电源线怎么选?接口、电流、线径、认证一次讲清
服务器
浪客灿心9 小时前
项目篇:模块设计与实现
数据库·c++
流星白龙10 小时前
【MySQL高阶】26.事务(1)
数据库·mysql