智能家居代码补充:只显示修改部分 - 以智能灯为例
以下是补充的代码部分:
在 lights.cpp 中的 switchButton_status 方法中添加更新数据库的代码:
bool Lights::switchButton_status(bool checked)
{
qDebug()<<checked;
flag=checked;
// 更新数据库中的设备状态
if (checked) {
updateSmartHomeStatus(userid, QString('智能灯'), QString('开启'), QString::number(ui->ctrlform->getValue()));
} else {
updateSmartHomeStatus(userid, QString('智能灯'), QString('关闭'), QString('0'));
}
return flag;
}
在 lights.cpp 中添加更新亮度的方法 updateBrightness:
void Lights::updateBrightness(int brightness)
{
// 更新数据库中的亮度值
updateSmartHomeStatus(userid, QString('智能灯'), QString('开启'), QString::number(brightness));
}
在 lights.cpp 中的 on_Finished_clicked 方法中调用 updateBrightness 方法:
void Lights::on_Finished_clicked()
{
if (ui->SwitchStatus->isChecked()) {
int brightness = ui->ctrlform->getValue();
updateBrightness(brightness);
} else {
updateSmartHomeStatus(userid, QString('智能灯'), QString('关闭'), QString('0'));
}
}
在 lights.cpp 中的 loadLastStatus 方法中添加加载亮度的代码:
void Lights::loadLastStatus()
{
// 加载上次更改的状态和亮度值
QString state = getLastState(this->userid);
QString brightness = getLastBrightness(this->userid);
if (state == '开启') {
ui->SwitchStatus->setChecked(true);
ui->ctrlform->setValue(brightness.toInt());
} else {
ui->SwitchStatus->setChecked(false);
ui->ctrlform->setValue(0);
}
// 如果界面上显示开启状态,但存入数据库的设备状态为关闭,则更新数据库中的状态为开启
if (ui->SwitchStatus->isChecked() && state == '关闭') {
updateSmartHomeStatus(userid, QString('智能灯'), QString('开启'), brightness);
}
}
在 lights.cpp 中的 saveLastStatus 方法中添加保存亮度的代码:
void Lights::saveLastStatus()
{
QString brightness = QString::number(ui->ctrlform->getValue());
updateLastBrightness(this->userid, brightness);
// 如果界面上显示关闭状态,但存入数据库的设备状态为开启,则更新数据库中的状态为关闭
if (!ui->SwitchStatus->isChecked()) {
updateSmartHomeStatus(userid, QString('智能灯'), QString('关闭'), QString('0'));
}
}
在 lights.h 中添加新的私有方法 updateBrightness 的声明:
private:
void updateBrightness(int brightness);
这些修改会根据用户在界面上的操作更新数据库中的设备状态和亮度值。
代码说明:
switchButton_status方法会在开关按钮状态改变时更新数据库中的设备状态和亮度值。updateBrightness方法用于单独更新数据库中的亮度值。on_Finished_clicked方法会在完成按钮被点击时更新数据库中的亮度值。loadLastStatus方法用于加载上次更改的设备状态和亮度值。saveLastStatus方法用于保存当前更改的设备状态和亮度值。
这些代码片段展示了如何将用户界面操作与数据库更新联系起来,以保证数据的一致性。
原文地址: https://www.cveoy.top/t/topic/fBb8 著作权归作者所有。请勿转载和采集!