QT5笔记: 16. 时间和定时器的常用功能


例子
#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. 时间和定时器的常用功能的更多相关文章
- Android(java)学习笔记16:多线程 - 定时器概述和使用
1. 定时器: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行. 在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 Timer public ...
- Android开发自学笔记—1.1(番外)AndroidStudio常用功能介绍
一.界面区介绍 1.项目组织结构区,用于浏览项目文件,默认Project以Android组织方式展示. 2.设计区,默认在打开布局文件时为设计模式,可直接拖动控件到界面上实现所见即所得,下方的Desi ...
- Java基础知识强化之集合框架笔记16:List集合的特有功能概述和测试
1. List集合的特有功能概述: (1)添加功能: void add(int index, Object element):在指定位置添加元素 (2)获取功能: Object get(int ind ...
- Maven实战读书笔记(七):Maven常用功能
7.1.资源排除 <resources> <!-- 启动过滤,包含的文件会被过滤掉 --> <resource> <directory>src/main ...
- 《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理【转】
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/10/3070373.html 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务 ...
- MySql学习笔记(一)之DQL常用查询
MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前, ...
- Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行
Ext.Net学习笔记16:Ext.Net GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候 ...
- 《Windows内核安全与驱动开发》4.3 时间与定时器
<Windows内核安全与驱动开发>阅读笔记 -- 索引目录 <Windows内核安全与驱动开发>4.3 时间与定时器 一.获取自系统启动以来的毫秒数 /* 函数作用:求自操 ...
- Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
- js(jQuery)获取时间的方法及常用时间类搜集
获取时间的方法及常用时间类都是大家经常使用的,在本文为大家整理了一些,个人感觉还比较全,感兴趣的朋友可以收集下 复制代码代码如下: $(function(){ var mydate = new D ...
随机推荐
- 用nginx正向代理,让内网主机通过外网主机访问外网
需求1:某几个ip的代理 server { listen 9000; # 监听端口 server_name localhost; set $url "proxy_server_doman_o ...
- 深入聊聊async&Promise
正文 最近在学习JavaScript里的async.await异步,对于其中的Promise状态以及背后的Js引擎实际运行状态不大理解且很感兴趣,因此花了一点时间仔细研究了一下. 从Example说起 ...
- 12C++循环结构-for循环(2)——教学
一.循环变量为字符型 (第32课 26个兄弟姐妹)参考视频1 试编一程序,按字典顺序输出26个字母. 流程图: 思考:先顺序输出26个小写英文字母,再逆序输出26个大写英文字母. 循环可以是递增型循环 ...
- vue3 在给路由跳转增加动画之后,跳转时页面会出现上下抖动的问题
这个问题需要分两个步骤解决: 抖动的页面有多个多根节点 增加离开过渡的css样式 v-leave-to: {display: none} 解决步骤1 (抖动的页面有多个多根节点) 我在为路由跳转增加了 ...
- https://gitlab.com/volian/nala/-/wikis/Installation
Installation Debian Testing/Sid Nala is officially in the testing and sid repos. sudo apt install ...
- [转]idea中创建maven的Javaweb工程并进行配置(图文教程)
原文链接: idea中创建maven的Javaweb工程并进行配置(图文教程)
- JavaScript 数组展平方法: flat() 和 flatMap()
从 ES2019 中开始引入了一种扁平化数组的新方法,可以展平任何深度的数组. flat flat() 方法创建一个新数组,其中所有子数组元素以递归方式连接到特定深度. 语法:array.flat(d ...
- Python学习(四)——配套《PyTorch深度学习实战》
1. Python中字符串的相加和相乘 在Python中,字符串可以通过加号(+)进行相加(连接),也可以通过乘号(*)进行相乘(重复).以下是这两种操作的详细说明和示例: 字符串的相加(连接) 字符 ...
- [LC793]阶乘函数后 K 个零
题目描述 f(x) 是 x! 末尾是 0 的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 ) 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 : ...
- Java 中toString方法在枚举中的应用:展示枚举字段信息
在Java编程中,枚举(enum)是一种特殊的数据类型,它允许程序员定义一组固定的常量.枚举类型在Java中非常有用,尤其是在需要表示一组固定选项(如星期.月份.方向等)时.尽管枚举类型在定义时看起来 ...