Qt实战案例(1)——计时器的启动、暂停与继续

本文介绍了如何使用Qt框架创建一个倒计时器应用。通过设置开始和暂停按钮,用户可以启动和控制倒计时。主程序中,UI界面包含开始、暂停按钮以及显示时间的QDateTimeEdit和QLCDNumber组件。倒计时器每秒更新一次,当时间到0时自动停止。此外,还展示了如何响应按钮点击事件来切换倒计时的运行和暂停状态。
摘要由CSDN通过智能技术生成

一、项目介绍

在界面中设置一个开始时间,点击开始按钮,开始倒计时,暂停按钮控制倒计时的暂停和继续。
在这里插入图片描述

二、项目基本配置

新建一个Mainwindow界面。基本配置与其他Qt项目类似,这里不过多介绍。

三、UI界面设计

UI界面如下:
在这里插入图片描述
界面中创建了4个控件,其名称和类型如下表所示:

序号名称类型属性
beginBtnQPushButton开始
stopBtnQPushButton暂停
pgtimelineQDateTimeEdit/
lcdNumberQLCDNumber/

四、主程序实现

4.1 mainwindow.h

主要代码如下:

public:
    int min=0;//定义分钟
    int sec=0;//定义秒
    bool clicked = false;//点击

private:
    Ui::MainWindow *ui;
    QDateTimeEdit *pgtimeline;
    QTimer *pgtimer1000;
    QLCDNumber *lcdNumber;

private slots:
    void updateTime1000();
    void starttime();
    void stoptime();

4.2 mainwindow.cpp

MainWindow函数内代码如下:

   //设置日期时间框
    //pgtimeline=new QDateTimeEdit(this);
    ui->pgtimeline->setDisplayFormat("mm分ss秒");
    //设置LCD显示
    //lcdNumber=new QLCDNumber(this);
    ui->lcdNumber->setDigitCount(8);
    ui->lcdNumber->setSegmentStyle(QLCDNumber::Flat);
    ui->lcdNumber->display("0");
    //创建计时器
    pgtimer1000=new QTimer;
    connect(ui->beginBtn,&QPushButton::clicked,this,&MainWindow::starttime);//开始按钮槽函数
    connect(ui->stopBtn,&QPushButton::clicked,this,&MainWindow::stoptime);//暂停按钮槽函数
    connect(pgtimer1000,&QTimer::timeout,this,&MainWindow::updateTime1000);//倒计时更新

创建三个槽函数,分别为开始按钮槽函数、暂停按钮槽函数和倒计时器槽函数。
开始按钮槽函数:

//开始按钮槽函数
void MainWindow::starttime()
{
    QString strMinute = ui->pgtimeline->sectionText(QDateTimeEdit::MinuteSection);
    QString strSecond = ui->pgtimeline->sectionText(QDateTimeEdit::SecondSection);
    min=strMinute.toInt();//分钟
    sec=strSecond.toInt();//秒
    pgtimer1000->start(1000);//每隔1000ms计时一次
}

暂停按钮槽函数:

//暂停按钮槽函数
void MainWindow::stoptime()
{
    QString button_style="QPushButton{background-color:#4682B4;color:white}";
    QString button_style2="QPushButton:pressed{background-color:white;color:#4682B4;border-style:inset;}";
    if(clicked == false)//表示倒计时器处于运行状态,单击之后按钮状态变成“继续”
    {
        ui->stopBtn->setText(QString::fromUtf8("继续"));
        ui->stopBtn->setStyleSheet(button_style2);
        pgtimer1000->stop();
        clicked = true;

    }
    else if(clicked == true)//表示倒计时器处于停止状态,单击之后按钮状态变成“暂停”
    {
        ui->stopBtn->setText(QString::fromUtf8("暂停"));
        ui->stopBtn->setStyleSheet(button_style);
        pgtimer1000->start(1000);
        clicked = false;
    }
}

倒计时器槽函数:

//倒计时器槽函数
void MainWindow::updateTime1000()
{
    if (sec!=0)
    {
        sec=sec-1;
    }
    else if (min!=0)
    {
        sec=59;
        min=min-1;
    }
    else
    pgtimer1000->stop();//分和秒都为0时,停止计时器
ui->lcdNumber->display(QString("%1:%2").arg(QString::number(min),QString::number(sec)));
}

五、效果演示

在这里插入图片描述
ok!以上便是全部内容了,完整代码可以参考:https://download.csdn.net/download/didi_ya/21771904,如果对你有所帮助,记得点个赞哟~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wendy_ya

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值