Qt 学习笔记 - 第五章 - Qt 时间编程 - Qt 时钟
Qt 学习笔记全系列传送门:
1、UI
- 时间显示:使用QLabel,显示时间
- 开始按钮:开始计时
- 停止按钮:停止计时
- 重置按钮:计时归零
- 打点按钮:记录时刻
- 显示框:使用QTextBowser,显示记录的时刻
2、逻辑实现
头文件
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget>
#include <QTimer>
#include <QTime> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = 0);
~Widget(); // 在本节内容中,本质上是作为一种定时任务
QTimer localTimer;
QTimer timer;
// 真正的时间
QTime localTime;
QTime time; private slots:
void on_startBt_clicked(); void timeout_slot(); void on_resetBt_clicked(); void on_stopBt_clicked(); void on_bitBt_clicked(); private:
Ui::Widget *ui;
// 用于打点计数
int i;
}; #endif // WIDGET_H初始化
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); // 创建窗口时先对秒表进行一次初始化
this->on_resetBt_clicked(); // 每30毫秒触发信号,用于本地时间的刷新
localTimer.start(30);
// 获取当前时间并展示到页面
connect(&localTimer, &QTimer::timeout, this, [=](){
localTime = QTime::currentTime();
ui->localTime->setText(localTime.toString("hh:mm:ss:zzz"));
}); // 设置监听,监听到定时信号时,调用槽函数,增加秒表的时间
connect(&timer, SIGNAL(timeout()), this, SLOT(timeout_slot()));
}
开始计时与计时过程
void Widget::on_startBt_clicked()
{
// 每30毫秒触发信号timeout()
timer.start(30);
} void Widget::timeout_slot()
{
//qDebug("test");
// 秒表增加的时间与定时信号的间隔时间相同
time = time.addMSecs(30);
ui->showTime->setText(time.toString("hh:mm:ss:zzz"));
}
停止计时
void Widget::on_stopBt_clicked()
{
// 停止定时任务,即停止秒表
timer.stop();
}
打点
void Widget::on_bitBt_clicked()
{
QString tmp;
tmp.sprintf("%d", ++i);
ui->showBit->append(tmp);
ui->showBit->append(time.toString("hh:mm:ss:zzz"));
}
重置计时
void Widget::on_resetBt_clicked()
{
// 先关闭计时
this->on_stopBt_clicked(); // 重置时间为0并显示到页面
time.setHMS(0, 0, 0, 0);
ui->showTime->setText("00:00:00:000"); // 打点的初始化
i = 0;
ui->showBit->clear();
}
Qt 学习笔记 - 第五章 - Qt 时间编程 - Qt 时钟的更多相关文章
- Programming Entity Framework-dbContext 学习笔记第五章
### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...
- [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像
[HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像 干货 JPEG.PNG.GIF有何不同 JPEG适合连续色调图像,如照片:不支持透明度:不支持动画:有损格式 PNG适合单 ...
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)
#include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...
- 【马克-to-win】学习笔记—— 第五章 异常Exception
第五章 异常Exception [学习笔记] [参考:JDK中文(类 Exception)] java.lang.Object java.lang.Throwable java.lang.Except ...
- 《Spring实战》学习笔记-第五章:构建Spring web应用
之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...
- o'Reill的SVG精髓(第二版)学习笔记——第五章
第五章 文档结构 5.1 结构与表现 XML的目标之一便是提供一种能将结构从视觉表示中独立出来的方法. 但是不幸的是,关于XML的很多讨论都强调结构而非表现. 我们将通过详细讨论如何在SVG中指定表现 ...
- 学习笔记 第五章 使用CSS美化网页文本
第五章 使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...
- [汇编学习笔记][第五章[BX]和loop指令]
第五章[BX]和loop指令 前言 定义描述性符号“()”来表示一个寄存器或一个内存单元的内容,比如: (ax)表示ax中的内容,(al)表示al的内容. 约定符号ideta表示常量. 5.1 [BX ...
- [Python学习笔记][第五章Python函数设计与使用]
2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...
随机推荐
- 部署单机版Redis
docker-compose.yml: version: '2' services: #redis容器 redis: #定义主机名 container_name: redis-single #使用的镜 ...
- Byte流的压缩小技巧
使用Lz4: public class Lz4Tool { public static byte[] CompressBytes(byte[] bytes) { return LZ4Codec.Wra ...
- RN 使用react-navigation写可以滚动的横向导航条
在react-native中写横向导航条,首选肯定是react-navigation的createMaterialTopTabNavigator,附上官方文档链接.https://reactnavig ...
- Python编码转换图
- SpringBoot加载相关注解
springBoot加载 @Configuration 表明该类是一个配置类常常配合@Bean使用,让容器管理对象 @Configuration(proxyBeanMethods = true) pr ...
- linux 中安装、更新和卸载软件
1.Aptitude aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具. 与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些. ...
- centos7中通过源码安装postgresql13.6
下载地址:https://www.postgresql.org/ftp/source/ 0.安装相关依赖库 centos依赖包下载地址:https://developer.aliyun.com/pac ...
- dpkt 简单应用
import dpktfrom dpkt.utils import mac_to_str,inet_to_strcap=f'D:/test_pacp/6.pcap'with open(cap,'rb' ...
- hdu: Dire Wolf(区间DP)
Problem DescriptionDire wolves, also known as Dark wolves, are extraordinarily large and powerful wo ...
- FlexPaperViewer跨服务器\跨域访问swf不显示问题
做在线预览办公文档时,遇到了使用flexpaper访问文件服务器swf不显示问题. 假想1: swf文件有问题? 实验1: 直接访问swf文件在文件服务器的地址,浏览器可以正常访问,但是放在flexp ...