QThread定时器

2023-11-09

如何在子线程中启动定时器:

 

MyThread::MyThread(QObject *parent)
	: QThread(parent)
{
	printf("[%d] construct\n",this->currentThreadId());
}

MyThread::~MyThread()
{
	delete timer;
}

void MyThread::timedone()
{
	printf("[%d] test...\n",this->currentThreadId());
}

void MyThread::run()
{
	printf("[%d] sub thread start\n",this->currentThreadId());

	timer = new QTimer();
	connect(timer,SIGNAL(timeout()),this,SLOT(timedone()),Qt::DirectConnection);
	timer->start(2000);

	exec();
}


如上:在线程run中创建QTimer,使用DirectConnection连接槽函数,然后启动qt消息循环exec,输出如下: 

 

 

[5980] main thread start
[5980] construct
[5516] sub thread start
[5516] test...
[5516] test...
[5516] test...
[5516] test...
[5516] test...
[5516] test...
[5516] test...

1.如果QTimer传入this指针,输入如下: 

 

 

[7616] main thread start
[7616] construct
[7380] sub thread start
QObject: Cannot create children for a parent that is in a different thread.
(Parent is MyThread(0xe2b010), parent's thread is QThread(0x7debf8), current thr
ead is MyThread(0xe2b010)
[7380] test...
[7380] test...
[7380] test...

虽然也能正常运行,但会提示一个警告(算是):cannot create child for a parent,不能为一个父对象创建一个子对象在不同的线程,应该是创建了,但没有关联上父对象而已(所以应该在析构函数中delete),对么。 

 

2.将DirectConnection去掉,输出如下:

 

[4036] main thread start
[4036] construct
[7580] sub thread start
[4036] test...
[4036] test...
[4036] test...
[4036] test...
[4036] test...

输出还在主线程中 

 

3.将exec换成其他比如while(1),信号槽能正常连接,但永远不会调用超时函数timedone,信号其实是消息,走qt消息循环吧

 

[6020] main thread start
[6020] construct
[1244] sub thread start

from: http://www.voidcn.com/article/p-kwkawruy-xd.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QThread定时器 的相关文章

  • 【论文阅读】【因果关系】

    文章目录 因果理论的三个层级 张含望 因果推理在计算机视觉中的进展 浙江大学助理教授况琨 因果推理和稳定学习 因果理论的三个层级 该篇是本人入门因果 CV的随笔 期间会借鉴记录别人的理解 引用的部分会给出原始连接 如有侵权请联系我删除 Ju
  • EEPROM AT24C08的操作

    EEPROM应该是学习IIC总线时候最先接触的东西了 EEPROM的优点是可以随机存取 不像Flash存储器一样需要先擦除在能写入 而且擦写次数多存储时间长 但是缺点是存储空间非常有限 像我这用的Atmel的AT24C08只有8Kbit的存
  • Java异常机制Throwable

    Java中异常的概念以及处理异常 在Java程序运行期间出现了一个错误 这个错误可能是由于文件包含了错误信息 或者是由于网络连接出现问题 也可以是因为使用了无效的数组下标 或者是试图使用一个没有被赋值的对象引用而造成的 我们称这样的错误为异
  • canvas 简单用法

    canvas使用方法 1 首先要获取页面中的画布 var canvas document querySelector canvas 2 创建画笔 var context canvas getContext 2d 3 选择要绘画的方式 进行绘
  • Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程

    PEM文件有以下格式 PEM私钥文件格式 BEGIN RSA PRIVATE KEY END RSA PRIVATE KEY 生成该密钥的Linux命令 OpenSSL gt genrsa out privateKey pem 1024 读
  • 100天精通Python(基础篇)——第2天:注释

    文章目录 一 注释的作用 二 单行注释如何定义 三 多行注释 一 注释的作用 1 注释是代码中的解释型语句 用来对代码内容进行注释 2 注释不是代码 不会被程序执行 二 单行注释如何定义 通过 号定义 建议在 和注释内容之间 间隔一个空格
  • 锚点

    在制作网页时 我们常常遇到需要添加侧边导航 通过点击导航让页面自动滚动到指定位置 如 电商网站的楼层 这就涉及到 a 标签的锚点应用 把它称为 锚点标签 一 锚点 我们想要让页面跳转到的位置 就是锚点 锚点是一种超链接 只不过它是页面内部的
  • 使用Html做一个简单的登陆页面

    目录 绪论 一 新建一个html项目 二 制作整体框架 三 使用CSS进行修饰 绪论 html作为一个常用的前端语言 使用的人群范围是很大的 如果你想要成为一个前端工程师 那必不可少的就要做一个登陆页面 登录页面一般就是账号和密码 另外还需
  • 一文读懂:什么是RFID

    在物联网领域 我们经常听到 RFID 这个词 接下来讲解一下 什么是 RFID 个人技术公众号 解决方案工程师 欢迎同领域的朋友关注 相互交流 RFID 全称为 Radio Frequency Identification 中文称 射频识别
  • VRRP与DHCP

    目录 一 VRRP 1 VRRP基本概述 2 VRRP基本机构 3 设备类型 4 工作原理 5 VRRP主备备份过程 二 DHCP 1 应用场景 2 工作原理 一 VRRP 1 VRRP基本概述 VRRP 虚拟路由器冗余协议 VRRP能够在
  • 软件架构之架构视图

    软件架构设计运用RUP4 1视图方法进行设计 4 1架构视图模型是1995年Philippe kruchen在 IEEE software 上发表的题为 The 4 1 View Model of Architecture 文 主要包括的架
  • Linux shell编程(三)shell脚本中的特殊变量详解

    1 环境变量 全局变量 环境变量一般使用export内置命令导出的变量 用于定义shell运行环境 保证shell命令能够正确执行 shell通过环境变量来确定登录的用户名等信息 所有的环境变量都是系统的全局变量 环境变量可以在命令行中创建
  • JMeter快速入门知识系列(12)----JMeter集合点

    12 1 集合点的定义 在性能测试过程中 为了真实模拟多个用户同时进行操作以度量服务器的处理能力 可以考虑同步虚拟用户以便恰好在同一时刻执行操作或发送请求 通过插入集合点可以较真实模拟多个用户并发操作 注意 虽然通过加入集合点可以约束请求同
  • Oracle为用户设置读权限

    Oracle 数据库中创建表只读用户 并为其设置密码永不过期 同义词 1 创建用户 create user test identified by 123456 default tablespace db temporary tablespa
  • Maven详细入门

    Maven 一 是什么 二 干什么 1 方便的依赖管理 2 统一的项目结构 3 标准的项目构建流程 三 怎么用 1 Maven坐标 2 依赖管理 2 1 依赖配置 2 2 依赖传递 2 3 依赖范围 2 4 生命周期 2 5 依赖原则 3

随机推荐

  • 利用cin.get()的特性实现输入的错误处理

    cin get读取数据cin get ch cin get读取字符串cin get 字符串名 长度 当括号内无参数时 读掉缓存取的一个数据 cin clear 重置错误输入标记 接受新的输入 如若cin位于测试条件中 则将被转换为bool类
  • 矩阵求导中的分母布局与分子布局

    最近在处理一些优化问题时 我才注意到 在不同的书籍 资料中函数 f x R n
  • Kubernetes轻量级日志工具Loki安装及踩坑记录

    Loki简介 Loki是Grafana出品的一个轻量级日志系统 熟悉ELK的都知道ELK使用起来的成本 而且仅仅是日志检索使用ELK的话有点大材小用了 Loki8技术栈中使用了以下组件 Promtail 用来将容器日志发送到 Loki 或者
  • Linux进程隐藏问题————显示隐藏进程

    阿里云云监控到有两台redis服务器CPU被某进程消耗400 cpu资源 系统查看Top 情况并未找到高消耗进程X7但CPU100 ni Netstat 查找到了一些异常请求 初步判断出组件被提权入侵了 尝试查找异常进程X7关联的文件 排查
  • 解决flutter showDialog下拉框,复选框等无法及时响应的问题

    使用StatefulBuilder showDialogr showDialog context context builder BuildContext ctx return StatefulBuilder builder BuildCo
  • Web Worker API

    Web Worker API Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能 这样做的好处是可以在独立线程中执行费时的处理任务 使主线程 通常是 UI 线程 的运行不会被阻塞 放慢 Web
  • Kali 更换源(超详细,附国内优质镜像源地址)

    1 进入管理员下的控制台 2 输入密码后点击 授权 3 在控制台内输入下面的内容 vim etc apt sources list 4 敲击回车后会进入下面的页面 5 来到这个页面后的第一部是按键盘上的 i 键 左下角出现 插入 后说明操作
  • 使用APIKey定向加密对外接口案例

    使用API Key定向加密对外接口案例 整体思路 前端通过某种方式生成一个动态字段 例如时间戳 随机数 UUID 等 前端将动态字段和其他请求参数一起发送给后端 并对请求参数进行加密 后端通过相同的加密算法 使用动态字段生成 API KEY
  • Python解析库lxml与xpath用法总结

    本文主要围绕以xpath和lxml库进行展开 一 xpath 概念 xpath节点 xpath语法 xpath轴 xpath运算符 二 lxml的安装 lxml的使用 lxml案例 一 xpath 1 xpath概念 XPath 是一门在
  • 通用分页的详解(Java后端常用)

    目录 一 通用分页 1 1通用分页是什么 1 2使用通用分页有什么好处 1 3经常在哪使用通用分页 二 往常的通用分页实现及代码 三 通用分页的讲解 思路 具体实现代码 四 JUnit框架的使用 4 1JUnit框架是什么 4 2JUnit
  • 动态加载 JS 文件

    动态加载JS文件是指在网页运行过程中通过JavaScript代码向页面中动态添加外部JS文件 这种方式能够提高页面加载速度和用户体验 并且可以帮助网站实现更多的功能和特效 本文将详细介绍动态加载JS文件的基本原理 优势 注意事项以及具体实现
  • MySQL Workbench 报错 Cannot connect to Database Server

    MySQL Workbench是一款专为MySQL设计的ER 数据库建模工具 可以使用MySQL Workbench设计和创建新的数据库图示 建立数据库文档 以及进行复杂的MySQL迁移 MySQL Workbench是下一代的可视化数据库
  • lstm with attention_一文搞懂NLP中的Attention机制(附详细代码讲解)

    公众号关注 ML NLP 设为 星标 重磅干货 第一时间送达 机器学习算法与自然语言处理出品 公众号原创专栏作者 Don hub 单位 京东算法工程师 学校 帝国理工大学 Outline Intuition Analysis Pros Co
  • 细谈select函数(C语言)

    文章目录 1 介绍 2 例程 例程1 例程2 1 介绍 select 在socket编程中还是比较重要的 可是对于初学Socket的人来说都不太爱用Select写程序 他们只是习惯写诸如connect accept recv 或 recvf
  • C++实现sqrt

    1 题目 给定接口double sqrt int x double delta 请你实现开平方 其中x为底数 delta为最大误差 2 分析实现 直觉 gt 二分法 为了方便处理 将范围砍掉一半 认为0 lt x 0 5 sqrt x lt
  • python算法中的字符串算法(详解)

    目录 学习目标 学习内容 字符串匹配算法 Brute Force算法 KMP算法
  • Vue2中如何使用vue.use对自定义组件/指令进行快速注册?

    在Vue js中 使用 Vue use 方法可以快速注册自定义组件和指令 下面是使用 Vue use 方法进行注册的示例 自定义组件的示例 const MyComponent 组件的选项 template div My Custom Com
  • Java工程师的职业规划(转载牛客)

    作者 牛客229127715号 链接 https www nowcoder com discuss 353149180384321536 sourceSSR search 来源 牛客网 Java工程师的职业规划 最全版本 第一篇 1 初级程
  • C++容器与算法

    容器 某一类型数据的集合 C 标准顺序容器包括 vector list queue 容器初始化 vector
  • QThread定时器

    如何在子线程中启动定时器 MyThread MyThread QObject parent QThread parent printf d construct n this gt currentThreadId MyThread MyThr