#include lightsh#include ui_lightsh#include switchformh#include sqliteh#include QSqlQuery#include QSqlDatabase#include QSqlError#include QCloseEvent#include QDebugLightsLightsint useridQWidget parent
在Lights类的switchButton_status槽函数中,可以添加逻辑判断来实现点击SwitchForm后,无论ctrlform的值是否大于0,都将ui显示为关闭状态,同时更新数据库中的状态为关闭且亮度为0。
具体实现如下:
bool Lights::switchButton_status(bool checked)
{
qDebug() << checked;
flag = checked;
if (!checked) {
ui->ctrlform->setValue(0);
}
return flag;
}
在点击SwitchForm后,如果checked为false(即关闭状态),则将ctrlform的值设置为0。这样无论ctrlform的值是否大于0,都会将ui显示为关闭状态。
然后在点击完成按钮时,根据flag的值来更新数据库中的状态和亮度:
connect(ui->Finished, &QPushButton::clicked, this, [=]{
if (flag) {
QString brighteness = QString::number(ui->ctrlform->getValue());
qDebug() << brighteness << userid;
updateSmartHomeStatus(userid, QString("智能灯"), QString("开启"), brighteness);
} else {
qDebug() << "智能灯未打开!";
updateSmartHomeStatus(userid, QString("智能灯"), QString("关闭"), QString("0"));
}
});
在更新数据库之前,先判断flag的值,如果为true(即开启状态),则更新数据库中的状态为开启且亮度为ctrlform的值;如果为false(即关闭状态),则更新数据库中的状态为关闭且亮度为0。这样无论ctrlform的值是否大于0,都会将数据库中的亮度设置为0。
需要注意的是,updateSmartHomeStatus函数是自定义的更新数据库的函数,根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/iy6u 著作权归作者所有。请勿转载和采集!