qfedu-qt-level/qtdemo03/timerform1.cpp

55 lines
1.5 KiB
C++

#include "timerform1.h"
#include "ui_timerform1.h"
TimerForm1::TimerForm1(QWidget *parent) :
QWidget(parent),
ui(new Ui::TimerForm1)
{
ui->setupUi(this);
ui->stoptimebtn->setEnabled(false); // 将停止按钮禁用
// 手动实现
timer = new QTimer(this);
// 绑定 timeout 超时信号
connect(timer,&QTimer::timeout,[&]{
QDateTime currentTime = QDateTime::currentDateTime();
ui->datetimeLabel->setText(currentTime.toString("yyyy-MM-dd hh:mm:ss")); // 将当前时间显示在 QLabel 上
});
}
TimerForm1::~TimerForm1()
{
delete ui;
}
void TimerForm1::on_starttimebtn_clicked()
{
// timerId = startTimer(1000); // 启动定时器,每秒触发一次定时器事件
// 手动实现
timer->start(1000);
ui->starttimebtn->setDisabled(true); // 将开始按钮禁用
ui->stoptimebtn->setEnabled(true); // 启用停止按钮
}
void TimerForm1::on_stoptimebtn_clicked()
{
// killTimer(timerId); // 停止定时器
// 手动实现
if(timer->isActive())
timer->stop();
ui->stoptimebtn->setEnabled(false); // 将停止按钮禁用
ui->starttimebtn->setDisabled(false); // 启用开始按钮
}
void TimerForm1::timerEvent(QTimerEvent *e){
// 发生了定时器事件
// 获取当前时间
QDateTime currentTime = QDateTime::currentDateTime();
ui->datetimeLabel->setText(currentTime.toString("yyyy-MM-dd hh:mm:ss")); // 将当前时间显示在 QLabel 上
}