10.QT-定时器
QObject定时器
- 需要头文件#include <QTimerEvent>
需要函数
int QObject::startTimer(int interval);
//启动定时器,并设置定时器间隔时间(单位ms),启动后返回该定时器ID号. void QObject::timerEvent(QTimerEvent * event);
//定时器处理函数,需要用户来重写它,如果有多个定时器,可以通过QTimerEvent::timerId()来判断定时器ID处理 void killTimer(int id);
//通过定时器ID号来杀掉某个定时器
示例代码
Widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject> class Widget : public QWidget
{
Q_OBJECT private:
virtual void timerEvent( QTimerEvent * event ); public:
explicit Widget(QWidget *parent = );
}; #endif // WIDGET_H
Widget.cpp:
#include "Widget.h"
#include <QDebug>
#include <QTimerEvent> Widget::Widget(QWidget *parent) :
QWidget(parent)
{
int TimerID = startTimer(); //设置1000ms为单位
qDebug()<<"startTimerID : "<<TimerID;
} void Widget::timerEvent(QTimerEvent * event )
{
qDebug()<<"TimerID : "<<event->timerId();
}
QTimer定时器
需要头文件#include <QTimer>
QTimer类定时器支持单次触发和多次触发。
使用QTimer类定时器的步骤:
1. 创建一个QTimer定时器(示例)
QTimer *timer = new QTimer(this);
2. 连接timeout()信号与槽函数(示例)
connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));
3.启动定时器,并设置间隔时间
timer->start (int msec); //单位ms
4.停止定时器
timer->stop();
5.删除定时器
delete timer;
常用函数
void setSingleShot(bool singleShot);
// 设置使能单次触发和多次触发,默认情况为多次触发 bool isActive();
//判断定时器是否运行 bool setInterval ( int msec );
//从新设置间隔时间
示例代码
Widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QObject> class Widget : public QWidget
{
Q_OBJECT QTimer *timer; private slots:
void time_handler(); public:
explicit Widget(QWidget *parent = );
}; #endif // WIDGET_H
Widget.cpp:
#include "Widget.h"
#include <QDebug>
#include <QTimer> Widget::Widget(QWidget *parent) :
QWidget(parent)
{
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));
timer->start(); //1000ms
} void Widget::time_handler()
{
qDebug()<<"Timer out"; }
10.QT-定时器的更多相关文章
- QT定时器的两种应用(QObject就有timerEvent事件,一种什么样的居心呢?)
QT中定时器的使用方法(1)重载timerEvent(QTimerEvent *)函数,然后再在类的构造函数中设置时间间隔 startTimer(50);//单位为毫秒(2)在类的构造函数中设定如 ...
- QT基础:QT 定时器学习
定时器在编程中经常要用到,有必要学习一下,记记笔记! Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类. 1.QObject中的定时器的使用,需要用 ...
- Qt5官方demo分析集10——Qt Quick Particles Examples - Emitters
此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 前段时间去听了Qt在北京的开发人员大会,感觉QML ...
- muduo网络库学习笔记(10):定时器的实现
传统的Reactor通过控制select和poll的等待时间来实现定时,而现在在Linux中有了timerfd,我们可以用和处理IO事件相同的方式来处理定时,代码的一致性更好. 一.为什么选择time ...
- QT 定时器详解
编译器 : Qt Creator 在窗口化类中实现定时器 .h #include <QTimer> private slots: ... void onTimerOut(); priv ...
- Qt 定时器Timer使用
From: http://dragoon666.blog.163.com/blog/static/107009194201092602326598/ 1.新建Gui工程,在主界面上添加一个标签labe ...
- Qt定时器
PS: 本案例使用的是Qt 4.8.4版本,不同版本代码可能会有差异. 第一步: // 重写此虚函数(继承自QObject) virtual void timerEvent(QTimerEvent* ...
- qt 定时器
重写方法 virtual void timerEvent(QTimerEvent *event); 启动定时器 timerId = startTimer(500);
- QT 定时器的使用方法
在界面程序中很容易使用到,定时刷新或者更新什么东西,此时应该使用定时器的功能,定时器是在指定时间触发定时器函数,来达到定时的效果 接下来介绍两种定时器的使用,废话不说直接上代码 代码结构: dialo ...
- 10.QT程序框架与connect
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setup ...
随机推荐
- Slot使用
1.组件中有单个或多个未命名slot标签时,如下:<Child><span style=”color:red;”>hello world</span></Ch ...
- Maven 在新版eclipse报错的解决
转自Stack Overflow Remove all your failed downloads: Linux: find ~/.m2 -name "*.lastUpdated" ...
- unity API 之EventSystem.current.IsPointerOverGameObject()
命名空间 :UnityEngine.EventSystems 官方描述: public bool IsPointerOverGameObject(); public bool IsPointerOve ...
- [转] AppArmor
AppArmor https://help.ubuntu.com/14.04/serverguide/apparmor.html AppArmor 是一个实施了基于名称强制存取控制的Linux安全模组 ...
- ThreadLocal类的简单使用
1.概述变量值的共享可以使用public 是static 变量的形式,所有的线程都使用同一个public static 变量. 如实现线程内的共享变量,jdk提供了ThreadLocal来解决这个问题 ...
- Java工程师必备
Java工程师必备 JAVA基础扎实,熟悉JVM,熟悉网络.多线程.分布式编程及性能调优 精通Java EE相关技术 熟练运用Spring/SpringBoot/MyBatis等基础框架 熟悉分布式系 ...
- Python学习笔记【第十篇】:Python面向对象进阶
保护对象的属性 如果有一个对象,当需要对其进行修改属性时,有2种方法 对象名.属性名 = 数据 ---->直接修改 对象名.方法名() ---->间接修改 为了更好的保存属性安全,即不能随 ...
- MySQL 报错ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'
MySQL 我们在创建用户的时候,可能会遇到以下报错: ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user' 说明mysq.user ...
- 将double或则float类型保留小数
DecimalFormat df=new DecimalFormat("0.0");//“0.00” df.format(price);
- 在C语言中不使用任何中间变量如何将a、b的值进行交换(三种方法)——来自一小萌新工程师的复习
今天面试嵌入式,突然遇到这么一道题目,虽然简单,但鉴于我答得不是很好,所以还是分析一下为好. 第一种方法: 通过加减法. #include"stdio.h" int main(vo ...