代码修改只显示修改部分:用户点击Lights界面从数据库的Status表中得到最新的智能灯device_state和value更新在Lights页面当用户未对Switchform进行操作但对ctrlform更改时flag默认为FALSE但如果ui上显示开启状态时却存入Status的device_state为关闭出现错误如何解决#ifndef LIGHTS_H#define LIGHTS_H#inc
以下是修改后的代码部分:
void Lights::loadLastStatus()
{
qDebug()<<this->userid;
QString state = getLastState(this->userid);
QString brightness = getLastBrightness(this->userid);
qDebug()<<brightness;
if (state=="开启")
{
ui->SwitchStatus->setChecked(true);
ui->ctrlform->setValue(brightness.toInt());
}
else
{
ui->SwitchStatus->setChecked(false);
ui->ctrlform->setValue(0);
}
qDebug()<<brightness.toInt();
// 如果界面上显示开启状态,但存入数据库的设备状态为关闭,则更新数据库中的状态为开启
if (ui->SwitchStatus->checked() && state == "关闭") {
updateSmartHomeStatus(userid, QString("智能灯"), QString("开启"), brightness);
}
}
void Lights::saveLastStatus()
{
qDebug()<<this->userid;
QString state = QString(flag);
QString brightness = QString::number(ui->ctrlform->getValue());
updateLastBrightness(this->userid, state, brightness);
// 如果界面上显示关闭状态,但存入数据库的设备状态为开启,则更新数据库中的状态为关闭
if (!ui->SwitchStatus->checked() && state == "开启") {
updateSmartHomeStatus(userid, QString("智能灯"), QString("关闭"), QString("0"));
}
}
在loadLastStatus函数中,添加了检查界面上显示的开启状态是否与数据库中存储的设备状态一致的逻辑。如果界面上显示开启状态,但存入数据库的设备状态为关闭,则更新数据库中的状态为开启。在saveLastStatus函数中,也添加了类似的逻辑,用于检查界面上显示的关闭状态是否与数据库中存储的设备状态一致,如果不一致,则更新数据库中的状态为关闭。这样可以确保界面上显示的状态与数据库中存储的状态一致。
原文地址: https://www.cveoy.top/t/topic/izaL 著作权归作者所有。请勿转载和采集!