Qt QTimer使用
QTimer作为Qt中方便快捷的定时器,在日常使用中经常用到,但是我有时会犯一些毛病,比如一位自己已经很了解一个类,就不会去特地观看这个类的官方文档,很多时候想用一些高级特性,会摸不着头脑,比如这次,我想要弄一个1秒钟之后只触发一次的定时器,我脑子里想的是:
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, [=] {timer->stop();delete timer;//do something...
});
timer->start(1000);
我想了一下,这样写不是很鸡肋么?为什么非要手动撸一个只运行一次的定时器对象出来,越想就越是觉得有点蠢蠢的,于是去网上找,最后发现,原来Qt早就设计好了:
翻译:
QTimer类提供重复和单次定时器。
QTimer类为定时器提供高级编程接口。 创建一个QTimer实例,将其timeout()信号连接到相应的槽,然后调用start(),之后,它将以固定间隔发出timeout()信号。
举个例子,一个1秒(1000毫秒)触发的定时器(来自模拟时钟示例):
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
计时开始之后,槽函数update()将会每秒触发一次。
你可以通过调用setSingleShot(true)将计时器设置为仅触发一次。 你还可以使用静态函数QTimer::singleShot()在指定的时间间隔后调用槽函数:
QTimer::singleShot(200, this, SLOT(updateCaption()));
有了这个函数,我们可以将一开始的那个仅触发一次的方法修改为以下代码:
QTimer::singleShot(1000, []{//do something...
});//或者
QTimer::singleShot(1000, this, []{//do something...
});//又或者
QTimer::singleShot(200, this, SLOT(doSomething()));//再或者
QTimer::singleShot(200, this, &MainWindow::doSomething);
这样有什么需要在1秒后仅触发一次的操作放在匿名函数里面,或者自己新建一个槽函数,连接超时的信号就可以了。
Qt QTimer使用相关推荐
- Qt: QTimer和QThread
让QTimer 跑在其他线程. 一般写法如下. 1. 在main thread中为worker thread指定定时器. QThread* thread = new QThread(this);thr ...
- Qt QTimer在线程的应用与思考
Qt中提供了QTimer计时器,可以单次或者多次触发,当计时结束的时候利用connect()函数可以触发自己想要的函数,具体实现如下: 创建定时器,并且和计时结束之后发射的槽函数信号连接起来: QTi ...
- 【QT】QT Qtimer定时的使用 含屏保功能实现,鼠标无操作后处理事件
新建一个工程项目 我们的编程语言里面都有个定时器这样的类或者函数,定时器一般就是设定一个时间间隔,会自动发送一个信号,我们需要处理这个信号,也就是一个槽函数.因为QT是信号和槽的机制.定时操作有很多有 ...
- QT QTimer定时器显示系统时间倒计时功能
QT定时器显示系统时间倒计时功能 lcdNumber控件显示 QTimer::singleShot(10000,this,&MainWindow6_6::close);//10秒后窗口自动关闭 ...
- Qt QTimer类
Header: #include CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PR ...
- linux+qt+定时精度,Qt QTimer测试定时精度
调试信息输出窗口可以查看超时误差 dialog.h文件 #ifndef DIALOG_H #define DIALOG_H #include #include namespace Ui { class ...
- Qt QTimer定时器
1.QTimer简介 QTimer 主要的属性是 interval,是定时中断的周期,单位毫秒.QTimer 主要的信号是 timeout(),在定时中断时发射此信号,要想在定时中断里做出响应,这就需 ...
- QT Desinger设计程序主界面 PyUIC生成.py
我们在PyCharm安装配置Qt Designer+PyUIC教程中已配置好了PyCharm+QTDesigner+PyUIC环境 这里在此基上我们演示如何使用这些工具,编写一个图形界面程序: 程序主 ...
- OpenCV+ Qt Designer 开发人脸识别考勤系统
文章目录 1. 系统介绍 2. 系统架构 3. 开发步骤 3.1 安装必要的库 3.2 设计用户界面 3.3 编写代码 3.3.1 导入库 3.3.2 连接数据库 3.3.3 定义主窗口类 3.3.4 ...
最新文章
- 静态程序分析chapter1 - 概述和两个重要步骤
- 通过Redis、Memcache的 incr 原子操作防刷机制的使用差别
- php面向对象公共类,PHP面向对象(一):类与类的实例化
- IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项
- IPv6应用普及,任重而道远
- SWIFT推送之本地推送(UILocalNotification)之二带按钮的消息
- 如何构建一个流量无损的在线应用架构 | 专题中篇
- Oil Deposits
- (94)分频器设计(奇数分频)
- Windows平台手动卸载Oracle Server【完整+干净】
- JAVA 基于websocket实时通信的实现—GoEasy
- AndroidDeveloper Weekly No.3
- STM32驱动AD9833
- 可以退税吗_个人所得税APP详细操作步骤来了!你成功“退税”了吗?
- 服务器系统https打不开网页,解决网站启动HTTPS出现重定向过多网页打不开问题...
- Word也能制作座位表?掌握这个技巧安排座位不慌乱
- 项目无法识别 ?. 语法,导致报错Module parse failed: Unexpected token
- 在线答题小程序数据库设计
- shit 环信 IM SDK IM SDK web
- 早期的Twitte蠕虫