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