打开定时器
1000毫秒一次循环,每次循环开始就会发出定时器开始的信号,然后根据connect就会进入槽函数
//开始定时器
void MainWindow::on_pushButton_clicked()
{
//启动定时器
//1000毫秒一次循环,每次循环开始就会发出定时器开始的信号,然后根据connect就会进入槽函数
mtimer.start(1000);
}
定时器信号的关联
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//把定时器的信号与槽函数关联起来
//&QTimer::timeout(),定时器的开始信号
//定时器一开始就会触发on_outBt_clicked
connect(&mtimer,&QTimer::timeout,this,&MainWindow::on_outBt_clicked);
}
定时器的循环开始,就会发出信号,根据connect 去执行槽函数
槽函数
获取当前时间,在led上显示
注意时间的格式转换"hh:mm:ss"
还有其他格式,查阅手册QTime
//槽函数
void MainWindow::on_outBt_clicked()
{
qDebug()<<"你好";
//获取当期时间(系统的时候)
QString t = QTime::currentTime().toString("hh:mm:ss");
//用数码管显示一下时间
ui->lcdNumber->display(t);
qDebug()<<t;
//显示日期
//获取当期时间(系统的时候)"yyyy.MM.dd"这个格式是参考手册的qdate
QString d = QDate::currentDate().toString("yyyy-MM-dd");
//用数码管显示一下时间
ui->label->setText(d);
qDebug()<<d;
}
关闭定时器
//停止定时器
void MainWindow::on_pushButton_2_clicked()
{
//停止定时器
//加强一步判断
//isActive() 定时器是活跃的话返回的是大于零的数
if (mtimer.isActive())
mtimer.stop();
}
高级定时器
ui界面布局如下
.cpp文件设置定时器
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFont>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
mtime(0,0,0) //变量的初始化,初始化的值放在括号里,几个变量的初始化之间用逗号
{
ui->setupUi(this);
//关联一下定时器
connect(&mtimer,&QTimer::timeout,this,&MainWindow::update_show);
//设置一下:在这个窗体下的所有组件字体
QFont font = this->font(); //获取当前字体
font.setPixelSize(20); //设置字体
this->setFont(font); //再把修改好的字体设置塞回去
//设置一下本窗体的固定大小,之后就不能动了
//this->setMaximumWidth()
}
MainWindow::~MainWindow()
{
delete ui;
}
槽函数
//槽函数
void MainWindow::update_show()
{
//设置时间
//每次在mtime这个变量后面加1毫秒
mtime =mtime.addMSecs(1);
//显示在label中
//toString 让mtimer以什么格式显示
ui->label_2->setText(mtime.toString("hh:mm:ss:zzz"));
}
开始与停止
//开始
void MainWindow::on_pushButton_2_clicked()
{
//使用定时器启动 每1毫秒启动一起
mtimer.start(1);
}
//停止
void MainWindow::on_pushButton_3_clicked()
{
//停止定时器
//可以再加一个判断
if (mtimer.isActive())
mtimer.stop();
}
记录
//记录
void MainWindow::on_pushButton_4_clicked()
{
//将label_2中的文本字符串取出来
QString text = ui->label_2->text();
//将字符加载到文本浏览框中
//以追加的形式显示
ui->textBrowser->append(text);
}
复位与清空
//复位
void MainWindow::on_pushButton_5_clicked()
{
//将label_2中显示的mtime清空,就是重新初始化一下
//和上方的初始化的格式不同哦!
mtime.setHMS(0,0,0);
//刷新标签
ui->label_2->setText(mtime.toString("hh:mm:ss:zzz"));
}
//清空文本浏览框
void MainWindow::on_pushButton_clicked()
{
ui->textBrowser->clear();
}