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

目录

    • 一、项目介绍
    • 二、项目基本配置
    • 三、UI界面设计
    • 四、主程序实现
      • 4.1 mainwindow.h
      • 4.2 mainwindow.cpp
    • 五、效果演示

一、项目介绍

在界面中设置一个开始时间,点击开始按钮,开始倒计时,暂停按钮控制倒计时的暂停和继续。
Qt实战案例(1)——计时器的启动、暂停与继续_第1张图片

二、项目基本配置

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

三、UI界面设计

UI界面如下:
Qt实战案例(1)——计时器的启动、暂停与继续_第2张图片
界面中创建了4个控件,其名称和类型如下表所示:

序号 名称 类型 属性
beginBtn QPushButton 开始
stopBtn QPushButton 暂停
pgtimeline QDateTimeEdit /
lcdNumber QLCDNumber /

四、主程序实现

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)));
}

五、效果演示

Qt实战案例(1)——计时器的启动、暂停与继续_第3张图片
ok!以上便是全部内容了,完整代码可以参考:https://download.csdn.net/download/didi_ya/21771904,如果对你有所帮助,记得点个赞哟~

你可能感兴趣的:(Qt,qt,c++)