您当前的位置: 首页 >  qt

wendy_ya

暂无认证

  • 1浏览

    0关注

    342博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

wendy_ya 发布时间:2021-08-31 19:44:03 ,浏览量:1

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

一、项目介绍

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

二、项目基本配置

新建一个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,如果对你有所帮助,记得点个赞哟~

关注
打赏
1659256378
查看更多评论
立即登录/注册

微信扫码登录

0.0402s