【Qt 时间算法】

在这里插入图片描述


开始时间是系统时间,++ ,剩余时间是外设软定时,- -
目的:系统时间(++) + 软定时(- -)= 总结束时间-》方便医护人员观看数据


【1】头文件


public:
        void setTreatmentEndTime();
private:
    uint8_t endtime_buttonflag;//剩余时间和结束时间切换标志位
    uint8_t switchflag;//时间切换标志
    bool HDflag = false;//解决回血界面返回治疗界面的结束时间和剩余时间切换的处理

【2】源文件

初始化

ui->label_timeend->hide();
ui->label_endtime->hide();
endtime_buttonflag=0;
switchflag =0;
ui->PB_endtime->setEnabled(false);
HDflag = false;//解决回血界面返回治疗界面的结束时间和剩余时间切换的处理

 connect(ui->PB_endtime, SIGNAL(clicked()), this, SLOT(PB_Func()));//初始化
 
else if(button ==ui->PB_endtime)//sjy 系统时间+剩余时间 = 总治疗剩余时间
    {
         setTreatmentEndTime();
    }

实现逻辑

//【2022-9-9】函数范围:治疗模式有效 1秒调用一次
void MainWindow::setTreatmentEndTime()
{
    if(endtime_buttonflag == 0){//人工点击后结束时间界面
        switchflag=1;//一直保持这个结束时间
        uint32_t totalTime;
        QString timeLeft, systemTime;
        QStringList timeLeftList,systemTimeList;
        timeLeft.clear();systemTime.clear();
        timeLeftList.clear();systemTimeList.clear();
        timeLeft = data_lib->Get_Value(279);//剩余时间 范围:0:00 - 9:59
        systemTime = ui->label_time->text();//系统时间 范围:00:00 -23:59
        timeLeftList = timeLeft.split(":");
        systemTimeList = systemTime.split(":");

        //全转化为分钟
        totalTime = (timeLeftList.at(0).toUInt()*60+timeLeftList.at(1).toUInt())+
                (systemTimeList.at(0).toUInt()*60+systemTimeList.at(1).toUInt());
        qDebug()<<"【"<<QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss ")<<"小时="<<totalTime/60<<"分钟="<<totalTime%60<<"】"<<"\r\n";

        if((totalTime/60) < 10 && (totalTime%60) < 10)//小时:0-9 分钟:0-9
        {
            ui->label_Rinseendime->setText(tr("结束时间 0%1:0%2").arg(totalTime/60).arg(totalTime%60));
        }
        else if((totalTime/60) < 10 && (totalTime%60) >= 10)//小时:0-9 分钟:10-xx
        {
            ui->label_Rinseendime->setText(tr("结束时间 0%1:%2").arg(totalTime/60).arg(totalTime%60));
        }
        else if((totalTime/60) >= 10 && (totalTime%60) < 10)//小时:10-xx 分钟:0-9
        {
            ui->label_Rinseendime->setText(tr("结束时间 %1:0%2").arg(totalTime/60).arg(totalTime%60));
        }
        else{//小时:10-xx 分钟:10-xx
            ui->label_Rinseendime->setText(tr("结束时间 %1:%2").arg(totalTime/60).arg(totalTime%60));
        }
        ui->label_26->hide();
        ui->label_timeleft->hide();
        ui->label_endtime->show();
        ui->label_endtime->update();
        ui->label_timeend->show();
        ui->label_timeend->update();
        endtime_buttonflag =1;
    }
    else if(endtime_buttonflag ==1){//剩余时间界面
            ui->label_26->show();
            ui->label_26->update();
            ui->label_timeleft->show();
            ui->label_timeleft->update();
            ui->label_endtime->hide();
            ui->label_timeend->hide();
            endtime_buttonflag = 0;
            switchflag = 0;
    }
}

调用位置(本人记录,其他人可忽略)

 else if(DataID == 279)          //透析剩余时间
    {
        ui->label_timeleft->setText(data_lib->Get_Value(DataID));
        if(ui->PB_endtime->isEnabled() && (switchflag == 0))//不断刷新  【SJY:新增】
        {
            endtime_buttonflag = 1;//剩余时间
            setTreatmentEndTime();//【SJY:新增】
        }
        else if(ui->PB_endtime->isEnabled() && switchflag == 1)
        {
            endtime_buttonflag=0;//结束时间
            setTreatmentEndTime();//【SJY:新增】
        }
        //透析结束不可切换剩余时间和结束时间 [SJY->2022/9/4]
       if((ui->PB_endtime->isEnabled() == true) && (ui->label_UFremoved->text() == ui->label_UFgoal->text()))//已超滤量=超滤目标
       {
           ui->PB_endtime->setEnabled(false);//此时时间结束函数暂停
           switchflag =2;
       }
       else if((switchflag == 2) && (ui->label_UFremoved->text() != ui->label_UFgoal->text())&&(ui->PB_endtime->isEnabled() == false))
       {  //当透析时间改变,超滤目标改变,需要再次治疗,此时可继续切换时间
           if(HDflag == false)//在回血状态
           {
                switchflag =2;//结束时间静止不动
           }
           else
           {
               ui->PB_endtime->setEnabled(true);
               switchflag =0;
           }
       }
        ui->widget_7->update();
    }

界面切换

 case 2://此时已经进入了治疗模式
                    ui->PB_endtime->setEnabled(true);//【SJY:新增】
                    HDflag  = true;//[SJY->2022/9/4]
                    endtime_buttonflag=1;//先显示剩余时间页【SJY:新增】
                    ui->PB_treatment->setProperty("check",true);
                    ui->PB_treatment->style()->unpolish(ui->PB_treatment);
                    ui->PB_treatment->style()->polish(ui->PB_treatment);
                    ui->PB_treatment->update();
                    break;
            case 3://离开治疗模式
                    ui->PB_endtime->setEnabled(false);//【SJY:新增】
                    HDflag  = false;//[SJY->2022/9/4]
                    ui->PB_treatment->setProperty("check",false);
                    ui->PB_treatment->style()->unpolish(ui->PB_treatment);
                    ui->PB_treatment->style()->polish(ui->PB_treatment);
                    ui->PB_treatment->update();
                    break;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Qt历险记

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

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

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

打赏作者

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

抵扣说明:

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

余额充值