zoukankan      html  css  js  c++  java
  • Qt 定时器事件startTimer

    定时器事件

    1、开启一个定时器:

    1  int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer);
    2  功能:启动一个定时器事件并返回一个定时器id
    3 
    4  参数说明:
    5      interval:定时器的触发时间(触发的间隔时间)

    2、关闭定时器

    1 void QObject::killTimer(int id)
    2  
    3  功能:关闭指定id的定时器
    4 
    5  参数说明:
    6      id:启动定时器时返回的id

    3、定时器事件

    1 virtual void timerEvent(QTimerEvent *event);
    2 
    3 功能:当启动定时器后自动调用的函数(虚函数需要重写)
    4 参数说明:
    5     event:事件(可用于判断当前发生的事件等)

    4、示例代码

    mainwindow.h文件

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 #include <QTimer>
     6 #include <QDebug>
     7 
     8 QT_BEGIN_NAMESPACE
     9 namespace Ui { class MainWindow; }
    10 QT_END_NAMESPACE
    11 
    12 class MainWindow : public QMainWindow
    13 {
    14     Q_OBJECT
    15 
    16 public:
    17     MainWindow(QWidget *parent = nullptr);
    18     void timerEvent(QTimerEvent *e);
    19     ~MainWindow();
    20 
    21 private:
    22     Ui::MainWindow *ui;
    23     int timerid1;
    24     int timerid2;
    25 };
    26 #endif // MAINWINDOW_H

    mainwindow.cpp文件:

     1 #include "mainwindow.h"
     2 #include "ui_mainwindow.h"
     3 
     4 MainWindow::MainWindow(QWidget *parent)
     5     : QMainWindow(parent)
     6     , ui(new Ui::MainWindow)
     7 {
     8     ui->setupUi(this);
     9     timerid1 = startTimer(1000);
    10     timerid2 = startTimer(3000);
    11 
    12 }
    13 
    14 void MainWindow::timerEvent(QTimerEvent *e)
    15 {
    16     if(e->timerId()==timerid1)
    17     {
    18         qDebug("timer1");
    19     }
    20     else if(e->timerId()==timerid2)
    21     {
    22         qDebug("timer2");
    23     }
    24 }
    25 
    26 MainWindow::~MainWindow()
    27 {
    28     delete ui;
    29 }

    main.cpp文件

     1 #include "mainwindow.h"
     2 
     3 #include <QApplication>
     4 
     5 int main(int argc, char *argv[])
     6 {
     7     QApplication a(argc, argv);
     8     MainWindow w;
     9     w.show();
    10     return a.exec();
    11 }

    5、运行结果

    timer1是每秒调用一次定时器事件,timer是每三秒调用一次定时器事件,因此输出顺序为先输出两个timer1再输出一个timer2并且马上输出一个timer1;并一直循环

  • 相关阅读:
    转C++的一点点
    无向图hash
    字符串相关
    Tutte矩阵求一般图最大匹配
    FFT的常数优化
    洲阁筛
    半平面交
    非旋treap套线段树
    点分治 [IOI2011]Race
    treap
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14677528.html
Copyright © 2011-2022 走看看