QT入门(九)——定时器

打开定时器

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值