定时器
1,Qt的定时器有两种,一种是继承于 QObject 的类内部自带的定时器,启动的时候用 startTimer 成员函数,返回一个定时器的编号,当定时器溢出的时候在 timerEvent 事件处理函数中处理 Timer 溢出的事件!
2,另外一种定时器是 Qt 提供的类, QTimer,这个定时器更强大,比如可以使用信号和槽,还可以设置只运行一次的定时器。
简单的 QObject 自带的 Timer 代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void timerEvent(QTimerEvent *event);
private:
Ui::MainWindow *ui;
int m_id1;
int m_id2;
int m_id3;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
m_id1 = startTimer(1000);
m_id2 = startTimer(3000);
m_id3 = startTimer(5000);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::timerEvent(QTimerEvent *event)
{
if(event->timerId() == m_id1)
{
qDebug() << "Timer _1 yes!";
}
if(event->timerId() == m_id2)
{
qDebug() << "Timer _2 yes!";
}
if(event->timerId() == m_id3)
{
qDebug() << "Timer _3 yes!";
}
}
OK,不知道什么原因,本人非常喜欢 Timer,类似于中断!
参考:
不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=77507&ctid=447