原文地址: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 时钟的更多相关文章

  1. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  2. [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像

    [HeadFrist-HTMLCSS学习笔记]第五章认识媒体:给网页添加图像 干货 JPEG.PNG.GIF有何不同 JPEG适合连续色调图像,如照片:不支持透明度:不支持动画:有损格式 PNG适合单 ...

  3. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  4. opencv图像处理基础 (《OpenCV编程入门--毛星云》学习笔记一---五章)

    #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/highgu ...

  5. 【马克-to-win】学习笔记—— 第五章 异常Exception

    第五章 异常Exception [学习笔记] [参考:JDK中文(类 Exception)] java.lang.Object java.lang.Throwable java.lang.Except ...

  6. 《Spring实战》学习笔记-第五章:构建Spring web应用

    之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...

  7. o'Reill的SVG精髓(第二版)学习笔记——第五章

    第五章 文档结构 5.1 结构与表现 XML的目标之一便是提供一种能将结构从视觉表示中独立出来的方法. 但是不幸的是,关于XML的很多讨论都强调结构而非表现. 我们将通过详细讨论如何在SVG中指定表现 ...

  8. 学习笔记 第五章 使用CSS美化网页文本

    第五章   使用CSS美化网页文本 学习重点 定义字体类型.大小.颜色等字体样式: 设计文本样式,如对齐.行高.间距等: 能够灵活设计美观.实用的网页正文版式. 5.1 字体样式 5.1.1 定义字体 ...

  9. [汇编学习笔记][第五章[BX]和loop指令]

    第五章[BX]和loop指令 前言 定义描述性符号“()”来表示一个寄存器或一个内存单元的内容,比如: (ax)表示ax中的内容,(al)表示al的内容. 约定符号ideta表示常量. 5.1 [BX ...

  10. [Python学习笔记][第五章Python函数设计与使用]

    2016/1/29学习内容 第四章 Python函数设计与使用 之前的几页忘记保存了 很伤心 变量作用域 -一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将这个赋值结果反映到函数之外,可 ...

随机推荐

  1. LoadRunner 常见错误

    1.LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Inter ...

  2. 关于新版的MySQL安装教程

    主要参考大大的博客,连接如下:https://www.cnblogs.com/xiaohanlin/p/10345501.html 在装MySQL时,突然发现最新版的居然是.zip格式的,我原来的还是 ...

  3. 攻防世界Web篇——unserialize3

    知识点: 序列化与反序列化维基百科:    序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后 ...

  4. Python 用exec来获取字符串所对应的字典

    Python 用exec来获取字符串所对应的字典 Python exec 问题的提出 想要遍历两个结构相似的字典,但是不想采用字典内嵌套字典的方式,所以想要通过一个列表,该列表包含字典名称.也就是通过 ...

  5. 在使用admin后台管理,添加或者修改数据库时,出现错误,no such table: main.auth_user__old

    在使用admin后台管理,添加或者修改数据库时,出现错误,no such table: main.auth_user__old. Django是2.0.9的版本,python是3.8.0 上述错误是因 ...

  6. 20220305认证第1题 leetcode 1385. 两个数组间的距离值

    给你两个整数数组 arr1 , arr2 和一个整数 d ,请你返回两个数组之间的 距离值 . 「距离值」 定义为符合此距离要求的元素数目:对于元素 arr1[i] ,不存在任何元素 arr2[j]  ...

  7. python实现学生信息管理系统——界面版

    前言(写于2022年5月17日) 这篇博客是我两年前大二时写的,一直放在草稿箱里,还没写完,现在快毕业了,突然翻出来了.虽然博客没写完,但早就写好了代码,可运行的exe文件以及文档.现在上传到gite ...

  8. Word技巧:ALT+X快捷键

    Word技巧:ALT+X快捷键 在Word中输入数字,然后使用键盘快捷键「ALT + X」,即可快速生成一个文字图形. 部分数字的对比参照: 2564 ╤ 2582 ▂ 2600 2618 ☘ 256 ...

  9. IDEA移除Maven依赖的方法

    参考地址:https://blog.csdn.net/weixin_45654405/article/details/124415010 方法一: 如果不行,则进行下一步: 尝试在project St ...

  10. centos7(虚拟机)下安装nginx

    centos7(虚拟机)下安装nginx 安装前准备 gcc yum install gcc-c++ pcre yum install -y pcre pcre-devel zlib yum inst ...