以下是代码补充部分:

在userswidget.cpp中的on_modeComboBox_currentIndexChanged函数中添加代码:

void UsersWidget::on_modeComboBox_currentIndexChanged(const QString &mode)
{
    if (mode == "睡眠模式") {
        updateSmartHomeStatus(userid, "智能灯", "开启", "20");
        updateSmartHomeStatus(userid, "空调", "开启", "27");
        updateSmartHomeStatus(userid, "加湿器", "开启", "50");
        updateSmartHomeStatus(userid, "窗帘", "开启", "100");
        emit modeChanged(); // 发送信号,通知Lights界面更新数据
    } else if (mode == "日常模式") {
        updateSmartHomeStatus(userid, "智能灯", "开启", "80");
        updateSmartHomeStatus(userid, "空调", "开启", "25");
        updateSmartHomeStatus(userid, "加湿器", "开启", "60");
        updateSmartHomeStatus(userid, "窗帘", "开启", "50");
        emit modeChanged(); // 发送信号,通知Lights界面更新数据
    } else if (mode == "节能模式") {
        updateSmartHomeStatus(userid, "智能灯", "开启", "50");
        updateSmartHomeStatus(userid, "空调", "开启", "26");
        updateSmartHomeStatus(userid, "加湿器", "开启", "40");
        updateSmartHomeStatus(userid, "窗帘", "开启", "30");
        emit modeChanged(); // 发送信号,通知Lights界面更新数据
    }
}

在userswidget.h中添加信号声明:

signals:
    void modeChanged();

在lights.h中添加槽函数声明:

private slots:
    void updateStatus(); // 更新状态的槽函数

在lights.cpp中实现槽函数和连接信号槽:

Lights::Lights(int userid,QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Lights),
    userid(userid)//保证userid无变化
{
    ui->setupUi(this);
    lightsWidget();
    //连接开关组件的信号和自定义的槽函数
    connect(ui->SwitchStatus,&SwitchForm::statusChanged,this,&Lights::switchButton_status);

    // 连接完成按钮的clicked信号和自定义的槽函数
    connect(ui->Finished, &QPushButton::clicked, this,[=]{
        if(ui->SwitchStatus->checked())
        {
            QString brighteness = QString::number(ui->ctrlform->getValue());
            qDebug()<<brighteness<<userid;
            updateSmartHomeStatus(userid,QString("智能灯"),QString("开启"),brighteness);
        }else
        {
            qDebug()<<"智能灯未打开!";
            updateSmartHomeStatus(userid,QString("智能灯"),QString("关闭"),QString("0"));
        }
    });
    // 加载上次更改的状态
    loadLastStatus();

    // 连接UsersWidget的modeChanged信号和Lights的updateStatus槽函数
    connect(parentWidget(), &UsersWidget::modeChanged, this, &Lights::updateStatus);
}

void Lights::updateStatus()
{
    // 加载最新的状态
    loadLastStatus();
}

这样,在用户界面选择模式时,会发送modeChanged信号,Lights界面会接收到该信号并调用updateStatus槽函数来更新状态。

代码补充只显示修改部分:用户在UserWidget界面点击QComboBox选择模式SQlite的Status表内数据改变要求点击Lights界面数据同时被更新#ifndef USERSWIDGET_H#define USERSWIDGET_H#include QWidgetnamespace Ui class UsersWidget;class UsersWidget public QWidg

原文地址: https://www.cveoy.top/t/topic/izCQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录