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

相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G1 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备1 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远1 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218611 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
-梅1 天前
linux(8) 软硬链接
linux·运维·服务器
慧都小项1 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
Wang's Blog1 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
张洛闻Eren1 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github