UI
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8f767c503ca2396c9e023ce9b2aee45e.png#pic_center)
QTime和Qtimer类
类 |
区别 |
QTimer |
定时器类,当时间溢出(记时超过定时区间)的时候,就会发出timeout 信号,触发槽函数 |
QTime |
时间类,提供时分秒 |
概述以及注意的点
- 清零和记数可以获取
lineEdit
的值,动态进行,取代使用static的方案
- 当时间溢出的时候进行处理,当清零的时候注意停止计时器,定时器的区间可以动态设置,默认区间的单位是毫秒。
- 把定时的数字转化为时分秒需要
Time
类。
以下涉及到的属性
语句 |
涉及到的属性 |
说明 |
QTime curTime=QTime::currentTime() |
|
获取当前时间 |
QDateTime curDateTime=QDateTime::currentDateTime() |
|
获取当前时间和日期,可以通过curDateTime.time() 获取时间,curDateTime.date() 获取日期, |
ui->editTime->setText(curDateTime.toString("hh:mm:ss")) |
|
设置时间,"yyyy-MM-dd hh:mm:ss" 设置日期时间,显示日期同理 |
ui->LCDHour->display(curTime.hour()); |
|
显示小时,minute分钟,second秒 |
va=ui->progressBar->value(); |
|
进度条值的读取和赋值 |
QDate dt=ui->calendarWidget->selectedDate(); |
|
读取日历上的日期 |
QTime tm=QTime::fromString(str,"hh:mm:ss"); |
|
字符串格式化时间 |
fTimer->setInterval(ui->spinBoxIntv->value()); |
|
设置定时器周期 |
fTimer->start(); |
|
开启定时器 |
ui->btnSetIntv->setEnabled(false); |
|
设置按钮不可选中 |
fTimeCounter.start(); |
|
开启计时器 |
int tmMsec=fTimeCounter.elapsed();//毫秒数 |
|
获取计时器的数值,可以进行处理 |
dialog-h说明(完整头文件见最后)
- 包含对应的头文件
#include <QTimer>
#include <QTime>
- 定义私有变量定时器指针和计数器
private:
QTimer *fTimer;
QTime fTimeCounter;
- 私有槽函数声明
private slots:
void on_timer_timeout();
void on_btnGetTime_clicked();
void on_calendarWidget_selectionChanged();
void on_btnSetTime_clicked();
void on_btnSetDate_clicked();
void on_btnSetDateTime_clicked();
void on_btnSetIntv_clicked();
void on_btnStart_clicked();
void on_btnStop_clicked();
dialog-cpp文件说明
- 头文件包含
#include <QDateTime>
#include <QString>
- 在构造函数中初始化定时器,以及进行信号和槽的关联
fTimer=new QTimer(this);
fTimer->stop();
fTimer->setInterval(1000);
connect(fTimer,SIGNAL(timeout()),this,SLOT(on_timer_timeout()));
- 槽函数
void Dialog::on_timer_timeout()
void Dialog::on_timer_timeout()
{
QTime curTime=QTime::currentTime();
ui->LCDHour->display(curTime.hour());
ui->LCDMin->display(curTime.minute());
ui->LCDSec->display(curTime.second());
int va=ui->progressBar->value();
va++;
if (va>100)
va=