1. // widget.h
    2. class Widget : public QWidget
    3. {
    4. Q_OBJECT
    5. public:
    6. Widget(QWidget *parent = nullptr);
    7. ~Widget();
    8. private:
    9. Ui::Widget *ui;
    10. // 定时器事件
    11. void timerEvent(QTimerEvent*);
    12. // 定时器ID
    13. int id1;
    14. int id2;
    15. };
    1. // widget.cpp
    2. #include "widget.h"
    3. #include "ui_widget.h"
    4. #include "QTimerEvent"
    5. Widget::Widget(QWidget *parent)
    6. : QWidget(parent)
    7. , ui(new Ui::Widget)
    8. {
    9. ui->setupUi(this);
    10. // 启动定时器 法一
    11. id1 = startTimer(1000);
    12. id2 = startTimer(2000);
    13. // 启动定时器 法二 (推荐)
    14. QTimer* timer1 = new QTimer(this);
    15. timer1->start(500); // 每隔0.5秒发送信号
    16. connect(timer1,&QTimer::timeout,[=](){
    17. static int num = 0;
    18. ui->label_4->setText(QString::number(num++));
    19. });
    20. // 点击按钮 暂停定时器
    21. connect(ui->pushButton,&QPushButton::clicked,[=](){
    22. timer1->stop();
    23. });
    24. }
    25. Widget::~Widget()
    26. {
    27. delete ui;
    28. }
    29. void Widget::timerEvent(QTimerEvent *e)
    30. {
    31. if(e->timerId()==id1) {
    32. static int num=0;
    33. ui->label_2->setText(QString::number(num++));
    34. }
    35. else if(e->timerId()==id2) {
    36. static int num2=0;
    37. ui->label_3->setText(QString::number(num2++));
    38. }
    39. }