• 例子

    #ifndef WIDGET_H
    #define WIDGET_H #include <QTime>
    #include <QTimer>
    #include <QWidget> QT_BEGIN_NAMESPACE
    namespace Ui { class Widget; }
    QT_END_NAMESPACE class Widget : public QWidget
    {
    Q_OBJECT public:
    Widget(QWidget *parent = nullptr);
    ~Widget(); private slots:
    void on_btnGetTime_clicked(); void on_btnSetTime_clicked(); void on_btnSetDate_clicked(); void on_btnSetDateTime_clicked(); void on_calendarWidget_selectionChanged();
    /**
    * @brief on_timer_timeOut
    * @note 定时器超时的槽函数
    */
    void on_timer_timeOut(); void on_btnStart_clicked(); void on_btnStop_clicked(); void on_btnSetInterval_clicked(); private:
    Ui::Widget *ui;
    /**
    * @brief timer 定时器timer
    */
    QTimer *timer; /**
    * @brief timeCounter 计时器
    */
    QTime timeCounter;
    };
    #endif // WIDGET_H
    #include "widget.h"
    #include "ui_widget.h" #include <QTimer> Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    {
    ui->setupUi(this);
    timer = new QTimer(this);
    timer->stop();
    connect(timer, SIGNAL(timeout()), this, SLOT(on_timer_timeOut()));
    } Widget::~Widget()
    {
    delete ui;
    } /**
    * @brief Widget::on_btnGetTime_clicked
    * @note 获取本地时间,并显示在文本框中
    */
    void Widget::on_btnGetTime_clicked()
    {
    QDateTime curDateTime = QDateTime::currentDateTime();
    QString date = curDateTime.toString("yyyy-MM-dd");
    QString time = curDateTime.toString("HH:mm:ss");
    QString dateTime = curDateTime.toString("yyyy-MM-dd HH:mm:ss");
    ui->editDate->setText(date);
    ui->dateEdit->setDate(curDateTime.date());
    ui->editTime->setText(time);
    ui->timeEdit->setTime(curDateTime.time());
    ui->editDateTime->setText(dateTime);
    ui->dateTimeEdit->setDateTime(curDateTime);
    } /**
    * @brief Widget::on_btnSetTime_clicked
    * @note 获取文本框中的内容,然后转换为时间
    */
    void Widget::on_btnSetTime_clicked()
    {
    QString timeStr = ui->editTime->text();
    QTime time = QTime::fromString(timeStr, "HH:mm:ss");
    ui->timeEdit->setTime(time);
    } /**
    * @brief Widget::on_btnSetDate_clicked
    * @note 获取文本框中的内容,然后转换为日期
    */
    void Widget::on_btnSetDate_clicked()
    {
    QString dateStr = ui->editDate->text();
    QDate date = QDate::fromString(dateStr, "yyyy-MM-dd");
    ui->dateEdit->setDate(date);
    } /**
    * @brief Widget::on_btnSetDateTime_clicked
    * @note 获取文本框中的内容,然后转换为时间和日期
    */
    void Widget::on_btnSetDateTime_clicked()
    {
    QString dateTimeStr = ui->editDateTime->text();
    QDateTime dateTime = QDateTime::fromString(dateTimeStr, "yyyy-MM-dd HH:mm:ss");
    ui->dateTimeEdit->setDateTime(dateTime);
    } /**
    * @brief Widget::on_calendarWidget_selectionChanged
    * @note 获取日期控件的所选择的日期,然后设置到文本框
    */
    void Widget::on_calendarWidget_selectionChanged()
    {
    QDate date = ui->calendarWidget->selectedDate();
    ui->editDateCalendar->setText(date.toString("yyyy-MM-dd"));
    } /**
    * @brief Widget::on_timer_timeOut
    * @note timer的超时事件,QT的timer要手动去定义timer、槽,手动去写connect
    */
    void Widget::on_timer_timeOut()
    {
    ui->lcdH->display(QTime::currentTime().hour());
    ui->lcdM->display(QTime::currentTime().minute());
    ui->lcdS->display(QTime::currentTime().second());
    } /**
    * @brief Widget::on_btnStart_clicked
    * @note 启动timer,并设置控件是否禁用
    */
    void Widget::on_btnStart_clicked()
    {
    timer->start();
    timeCounter.start(); ui->btnStart->setEnabled(false);
    ui->btnSetInterval->setEnabled(false);
    ui->btnStop->setEnabled(true);
    } /**
    * @brief Widget::on_btnStop_clicked
    * @note 停止timer,并设置控件是否禁用
    */
    void Widget::on_btnStop_clicked()
    {
    timer->stop();
    int time = timeCounter.elapsed();
    int second = time / 1000;
    int miniSec = time % 1000;
    QString str = QString::asprintf("%d\" %d",second, miniSec);
    ui->label_8->setText(str); ui->btnStart->setEnabled(true);
    ui->btnSetInterval->setEnabled(true);
    ui->btnStop->setEnabled(false);
    } /**
    * @brief Widget::on_btnSetInterval_clicked
    * @note 设置timer的interval
    */
    void Widget::on_btnSetInterval_clicked()
    {
    int value = ui->spinBox->value();
    timer->setInterval(value);
    }
  • 界面

QT5笔记: 16. 时间和定时器的常用功能的更多相关文章

  1. Android(java)学习笔记16:多线程 - 定时器概述和使用

    1. 定时器: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行. 在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 Timer public ...

  2. Android开发自学笔记—1.1(番外)AndroidStudio常用功能介绍

    一.界面区介绍 1.项目组织结构区,用于浏览项目文件,默认Project以Android组织方式展示. 2.设计区,默认在打开布局文件时为设计模式,可直接拖动控件到界面上实现所见即所得,下方的Desi ...

  3. Java基础知识强化之集合框架笔记16:List集合的特有功能概述和测试

    1. List集合的特有功能概述: (1)添加功能: void add(int index, Object element):在指定位置添加元素 (2)获取功能: Object get(int ind ...

  4. Maven实战读书笔记(七):Maven常用功能

    7.1.资源排除 <resources> <!-- 启动过滤,包含的文件会被过滤掉 --> <resource> <directory>src/main ...

  5. 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理【转】

    转自:http://www.cnblogs.com/wang_yb/archive/2013/05/10/3070373.html 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务 ...

  6. MySql学习笔记(一)之DQL常用查询

    MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...

  7. Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行

    Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...

  8. 《Windows内核安全与驱动开发》4.3 时间与定时器

    <Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.3  时间与定时器 一.获取自系统启动以来的毫秒数 /* 函数作用:求自操 ...

  9. Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  10. js(jQuery)获取时间的方法及常用时间类搜集

    获取时间的方法及常用时间类都是大家经常使用的,在本文为大家整理了一些,个人感觉还比较全,感兴趣的朋友可以收集下   复制代码代码如下: $(function(){ var mydate = new D ...

随机推荐

  1. 强化学习算法中的log_det_jacobian

    相关: https://colab.research.google.com/github/google/brax/blob/main/notebooks/training_torch.ipynb 之前 ...

  2. 2024年1月Java项目开发指南7:增删改查与接口测试

    我们之前,是从Controller层写到Service层,然后mapper层. 接下来我们反过来,从mapper层写到Controller层 两种方式都可以,你喜欢就行,甚至你先写service层也可 ...

  3. 如何在 Linux 中使用 grep 命令的排除功能

    来自grep 是一种强大的命令行工具,用于在一个或多个输入文件中搜索与正则表达式匹配的行,并将匹配的行标准输出.在本文中介绍如何在使用 grep 搜索时排除一个或多个单词或目录.   排除单词或多个条 ...

  4. Fastadmin框架,服务器搭建环境

    FastAdmin 基于ThinkPHP和Bootstrap的极速后台开发框架 https://www.fastadmin.net 安装node.js 1.获取node.js资源 V8.x: curl ...

  5. Qt编写安防视频监控系统23-图片地图

    一.前言 图片地图这个模块是后面新增加进去的,主要是安防领域还有很多应用场景是一个区域比如就一个学校,提供一个学校的平面图或者鸟瞰图,然后在该地图上放置对应的摄像机,双击该摄像机图标可以查看对应的实时 ...

  6. Qt开源作品8-通用控件移动

    一.前言 在做一些项目的过程中,有一种应用场景是需要拖动设备在一个容器中,自由拖动摆放到合适的位置,然后保存对应设备的坐标位置信息,在软件启动好以后自动加载配置好的坐标位置信息,将每个设备移动到对应的 ...

  7. milvus基础

    nlist和nprobe nlist 是调用 create_index 时设置的参数,nprobe 则是调用 search 时设置的参数. IVFLAT 和 SQ8 索引都是通过聚类算法把大量的向量划 ...

  8. (一).NET 6.0 Swagger添加文档注释

    1.先给api加上标题注释和返回值注释 2.右键项目属性找到生成中的输出 勾选完成以后重新生成项目 3.在Program项目启动类中编写代码 4.最终效果如下

  9. Solution Set - “伸手向着拉格朗日点作别”

    目录 0.「UR #9」「UOJ #133」电路手动分析 1.「UR #9」「UOJ #134」App 管理器 2.「UR #10」「UOJ #152」汉诺塔 3.「UNR #2」「UOJ #312」 ...

  10. 深入理解 RESTful Api 架构-copy

    深入理解 RESTful Api 架构 周梦康 发表于 2016-01-03 分类于 笔记 61818 次浏览 标签 : REST   一些常见的误解 不要以为 RESTful Api  就是设计得像 ...