概述
因为我想开发一个CAN分析仪上位机工具,用来模拟OSEK网络节点。其中免不了要有一些定时相关或当前时间的内容。这篇文章就先继续跟随视频学习Qt下时间相关的内容。
在这个计时器的实现过程中,主要用到就是定时功能。至于当前时间的显示,视频当成一个小作业留给我们自己完成,我在文末最后实现。
计时器的实现,我们分为四个功能:
- 开始:开启计时器
- 关闭:停止计时器
- 重置:清空时间
- 打点:每次点击,将时间显示在信息框中。
实现步骤
首先跟随视频进行一个布局。此时我们打点时间显示用的组件为Text Browser,而在之前串口助手显示接收信息时,我们使用的则是Plain Text Edit。这两个组件有什么区别呢?
头文件中添加time相关的头文件:
实现开始按钮,这里先测试下定时效果,槽函数中只有一句调试输出:
去除调试输出,将时间显示在界面上,效果如下:
实现关闭按钮。这里将界面上的关闭改为停止:
void Widget::on_closeBt_clicked()
{
timer.stop();
}
实现重置按钮:
void Widget::on_resetBt_clicked()
{
timer.stop();
time.setHMS(0, 0, 0, 0);
ui->label->setText(time.toString("hh:mm:ss:zzz"));
ui->bitTime->clear();
}
最后实现打点功能。想象一下上学时体育课跑步,此时为了直接显示出名次,增加了一个全局变量。
获取当前时间
根据视屏最后的提示,查看了QTime
类,最终找到了以下成员函数:
定义一个QTime
对象curtime
并显示到界面上: