qt自学笔记(十一)之定时器

来源:互联网 发布:帝国cms留言表单 编辑:程序博客网 时间:2024/06/11 08:04

前言:这一节学习qt中的定时器


定时器功能

让程序每过一定的时间就去执行某一个操作。


例子

让ui每过一秒就显示一次系统时间,实现一种动态的显示效果。


代码

mainwindoe.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    virtual void timerEvent(QTimerEvent *event);//这个是事件处理函数,写法是固定的private:    Ui::MainWindow *ui;    int timerid;//这个变量一定要有,因为一般的程序中一般不止一个定时器,需要这个来是识别为哪个定时器};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include "QTime"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    timerid=startTimer(1000);//这个函数就是用来启动一个定时器,括号里面为定的时间ms,并将返回一个数字给timeid来识别为哪个定时器}MainWindow::~MainWindow(){    delete ui;}void MainWindow::timerEvent(QTimerEvent *event)//不管有多少定时器,处理函数只有一个{    if(event->timerId()==timerid)//通过这个if来分别处理多个定时器的任务    {        QTime a;        QTime now = a.currentTime();//用于获取系统的时间,需要包含QTime的头文件。返回的也是QTime类        QString text = now.toString("HH:mm:ss");将QTime类转换为string类,因为settext的参数为string,括号里为格式        ui->time->setText(text);    }}

效果:

这里写图片描述

这里写图片描述


扩展

既然可以写多个定时器,试着再写一个定时器,也是实时显示数字的变化。

程序:
mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();    virtual void timerEvent(QTimerEvent *event);private:    Ui::MainWindow *ui;    int timerid;    int timerid1;    int n;};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include "QTime"MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    n=0;    timerid=startTimer(1000);    timerid1=startTimer(1000);}MainWindow::~MainWindow(){    delete ui;}void MainWindow::timerEvent(QTimerEvent *event){    if(event->timerId()==timerid)    {        QTime a;        QTime now = a.currentTime();        QString text = now.toString("HH:mm:ss");        ui->time->setText(text);    }    if(event->timerId()==timerid1)    {        ui->count->setText(QString::number(n));//这个函数QString::number(n)很重要,作用是将int转换为string        n++;    }}

效果

这里写图片描述

这里写图片描述

原创粉丝点击