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;并一直循环

  • 相关阅读:
    HDU 3401 Trade
    POJ 1151 Atlantis
    HDU 3415 Max Sum of MaxKsubsequence
    HDU 4234 Moving Points
    HDU 4258 Covered Walkway
    HDU 4391 Paint The Wall
    HDU 1199 Color the Ball
    HDU 4374 One hundred layer
    HDU 3507 Print Article
    GCC特性之__init修饰解析 kasalyn的专栏 博客频道 CSDN.NET
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14677528.html
Copyright © 2011-2022 走看看