Qt定时器的应用,实现时钟的状态
来源:互联网 发布:英国大学精算 知乎 编辑:程序博客网 时间:2024/06/05 21:02
Qt有两种定时器,一种是QObject类,另一种是QTimer类。
(1)QObject类提供了一个基本的定时器,通过函数startTimer()来启动,通过killTimer()来结束,通过QTimerEvent来处理定时器事件
startTimer(int interval)启动一个时间间隔为interval毫秒的定时器,返回一个定时器标识符,如果未能启动成功,则返回0。
该定时器只能使用killTime()来杀死,killTimer(int id)通过定时器标识符来杀死定时器。如果有多个定时器,可以通过QTimerEvent::timerId()来获取已经启动的定时器标识符。
(2)QTimer类定时器是QObject类定时器的扩展,它可以提供更多的功能。比如,它支持单次触发和多次触发。
使用QTimer类定时器的步骤:
(1)创建一个QTimer定时器实例:QTimer *timer = new QTimer(this);
(2)连接超时信号与槽:connect(timer, SIGNAL(timeout()), this, SLOT(testFunc()));
(3)启动定时器start();
(4)适时关闭定时器:stop();
(5)删除定时器实例:delete timer;
公共函数:
int interval() const 获得定时器时间间隔
bool isActive() const 获得定时器激活状态
bool isSingleShot() const 获得单次触发使能状态
int remainingTime() const 获得距离触发定时器事件的剩余时间
void setInterval(int msec) 设置定时器时间间隔
void setSingleShot(bool singleShot) 设置使能/禁用单次触发
void setTimerType(Qt::TimerType atype) 设置定时器类型
int timerId() const 获得定时器标识符
Qt::TimerType timerType() const 获得定时器类型
公共槽函数:
void start(int msec) 启动定时时间间隔为msec毫秒的定时器
void start() 启动定时器
void stop() 暂停定时器
void start() 启动定时器
void stop() 暂停定时器
信号:
void timeout() 超时
定时器事件和普通鼠标、键盘事件一样进入事件循环处理。因此,定时器的处理函数需要尽快完成,不然也会把界面卡死。
定时器不是精确的,因为它的处理函数也是放在事件循环中执行的;
头文件:
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTimerEvent>#include <QTime>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private: Ui::MainWindow *ui; void timerEvent(QTimerEvent *event);private: int m_timerId;};#endif // MAINWINDOW_H源文件:
main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); m_timerId = startTimer(1000);}MainWindow::~MainWindow(){ delete ui;}//定时器处理函数void MainWindow::timerEvent(QTimerEvent *event){ //可以有多个定时器,每个定时器有不同的处理 if(event->timerId() == m_timerId) { QTime now = QTime::currentTime(); QString text = now.toString("HH:mm:ss");//按照24小时制的格式进行字符串格式化; ui->timeLineEdit->setText(text); }}
时间格式化说明:
hh:mm:ss
按照12小时制的格式进行字符串格式化
如果时间处于00:00:00——12:59:59,则返回的字符串正常
如果时间处于13:00:00——23:59:59,则返回的字符串是实际时间-12小时后的值,也就是说比真实的时间少了12个小时。
例如:14:00:00进行格式化后的字符串为“2:00:00”
HH:mm:ss
按照24小时制的格式进行字符串格式化
当时间为任意一个区间,则返回的字符串都是正常的。
设计界面:
阅读全文
0 0
- Qt定时器的应用,实现时钟的状态
- 定时器的应用(三):数码时钟
- linux内核时钟与定时器的实现
- JQuery编写的定时器实现时钟
- 定时器的时钟
- windows对象提供的两种定时器的应用,时钟
- s3c2440x系统时钟设置及定时器的设置与应用
- 定时器的应用小案例(超酷时钟)
- QT定时器的实现 ,多种定时器的使用
- 用单片机定时器和数码管实现的电子时钟
- STM32定时器的时钟源
- 时钟、定时器的一个例子
- 定时器的实战--数码时钟
- STM32F407的定时器时钟频率
- 转 STM32定时器时钟 定时器的时钟有倍频功能
- QT时钟的创建
- Qt的时钟Example
- 单片机的机器时钟和状态时钟
- 完整的m序列序列生成函数和调用
- chroot ubuntu 16.04 on android
- 关于数组输入--类似于C那种动态分配数组内存的JAVA解决
- 大数据 第一节课 linux基础 基本的操作
- Jzoj3895 数字对
- Qt定时器的应用,实现时钟的状态
- Gym 101142G Gangsters in Central City【思维+Lca】
- 高级C语言教程-C语言函数setjmp()函数
- bzoj1731 [Usaco2005 dec]Layout 排队布局(差分约束+spfa)
- PHP最常用的设计模式
- Tensorflow实战Google-第三章-简单神经网络
- 【51nod】 1279
- NOIP专题训练——网络流 题解
- MyApplication框架或者变量的初始化