代码修改只显示修改部分:用户在UserWidget界面点击QComboBox选择模式SQlite的Status表内数据改变要求点击Lights界面数据同时被更新#ifndef USERSWIDGET_H#define USERSWIDGET_H#include QWidgetnamespace Ui class UsersWidget;class UsersWidget public QWidg
以下是修改后的代码,只显示修改部分:
userswidget.h:
#ifndef USERSWIDGET_H
#define USERSWIDGET_H
#include <QWidget>
namespace Ui {
class UsersWidget;
}
class UsersWidget : public QWidget
{
Q_OBJECT
public:
explicit UsersWidget(int userid, QWidget *parent = nullptr);
~UsersWidget();
void displayUsersWidget();
signals:
void modeChanged(const QString &mode); // 添加信号
protected:
void closeEvent(QCloseEvent *);
private slots:
void on_modeComboBox_currentIndexChanged(const QString &mode);
private:
Ui::UsersWidget *ui;
int userid;
};
#endif // USERSWIDGET_H
userswidget.cpp:
#include "userswidget.h"
#include "ui_userswidget.h"
#include "sqlite.h"
#include "lights.h"
#include "QCloseEvent"
#include "QMessageBox"
UsersWidget::UsersWidget(int userid, QWidget *parent) :
QWidget(parent),
ui(new Ui::UsersWidget),
userid(userid)
{
ui->setupUi(this);
displayUsersWidget();
connect(ui->lights, &QToolButton::clicked, this, [=]{
Lights *w = new Lights(userid);
w->show();
});
connect(ui->modeComboBox, QOverload<const QString&>::of(&QComboBox::currentIndexChanged), this, [this](const QString& mode){
on_modeComboBox_currentIndexChanged(mode);
});
}
UsersWidget::~UsersWidget()
{
delete ui;
}
void UsersWidget::displayUsersWidget()
{
setWindowTitle("智能家居总览图");
setFixedSize(900, 600);
}
void UsersWidget::on_modeComboBox_currentIndexChanged(const QString &mode)
{
if (mode == "睡眠模式") {
updateSmartHomeStatus(userid, "智能灯", "开启", "20");
} else if (mode == "日常模式") {
updateSmartHomeStatus(userid, "智能灯", "开启", "80");
} else if (mode == "节能模式") {
updateSmartHomeStatus(userid, "智能灯", "开启", "50");
}
emit modeChanged(mode); // 发送信号
}
void UsersWidget::closeEvent(QCloseEvent *e)
{
if (e->spontaneous()) {
QMessageBox::StandardButton reply;
reply = QMessageBox::information(this, "提示", "确认退出智能管家系统?", QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
e->accept();
} else {
e->ignore();
}
}
}
lights.h:
#ifndef LIGHTS_H
#define LIGHTS_H
#include <QWidget>
namespace Ui {
class Lights;
}
class Lights : public QWidget
{
Q_OBJECT
public:
explicit Lights(int userid, QWidget *parent = nullptr);
~Lights();
void lightsWidget();
bool flag = false;
void showEvent(QShowEvent *event);
void hideEvent(QHideEvent *event);
void loadLastStatus();
void saveLastStatus();
signals:
void brightnessChanged(int brightness); // 添加信号
private slots:
bool switchButton_status(bool checked);
void on_brightnessSlider_valueChanged(int value);
private:
Ui::Lights *ui;
int userid;
void closeEvent(QCloseEvent *event);
QString getLastBrightness(int userid);
QString getLastState(int userid);
void updateLastBrightness(int userid, QString brightness);
};
#endif // LIGHTS_H
lights.cpp:
#include "lights.h"
#include "ui_lights.h"
#include "switchform.h"
#include "sqlite.h"
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QSqlError>
#include <QCloseEvent>
#include <QDebug>
Lights::Lights(int userid, QWidget *parent) :
QWidget(parent),
ui(new Ui::Lights),
userid(userid)
{
ui->setupUi(this);
lightsWidget();
connect(ui->SwitchStatus, &SwitchForm::statusChanged, this, &Lights::switchButton_status);
connect(ui->brightnessSlider, &QSlider::valueChanged, this, &Lights::on_brightnessSlider_valueChanged);
connect(this, &Lights::brightnessChanged, ui->brightnessSlider, &QSlider::setValue);
}
Lights::~Lights()
{
delete ui;
}
void Lights::lightsWidget()
{
setWindowTitle("智能灯设置");
setAutoFillBackground(true);
QPalette palette = this->palette();
QPixmap pixmap(":/user/image/image/light.jpg");
palette.setBrush(QPalette::Window, QBrush(pixmap));
setPalette(palette);
setFixedSize(600, 400);
}
bool Lights::switchButton_status(bool checked)
{
flag = checked;
return flag;
}
void Lights::showEvent(QShowEvent *event)
{
loadLastStatus();
event->accept();
}
void Lights::hideEvent(QHideEvent *event)
{
saveLastStatus()
原文地址: https://www.cveoy.top/t/topic/izCj 著作权归作者所有。请勿转载和采集!