以下是一个简单的示例代码,演示如何将温度和灯控信息传输到数据库中,并通过按键在QWidget界面上显示。\n\nc++\n#include \"QtSql\"\n#include \"QWidget\"\n#include \"QVBoxLayout\"\n#include \"QPushButton\"\n#include \"QLabel\"\n#include \"QLineEdit\"\n\nclass MainWindow : public QWidget {\n Q_OBJECT\npublic:\n MainWindow(QWidget *parent = nullptr) : QWidget(parent) {\n // 创建数据库连接\n db = QSqlDatabase::addDatabase("QSQLITE");\n db.setDatabaseName("mydatabase.db");\n if (!db.open()) {\n qDebug() << "Error: Failed to connect database.";\n }\n\n // 创建表格\n QSqlQuery query;\n query.exec("CREATE TABLE IF NOT EXISTS temperature (id INTEGER PRIMARY KEY AUTOINCREMENT, value REAL)");\n query.exec("CREATE TABLE IF NOT EXISTS light (id INTEGER PRIMARY KEY AUTOINCREMENT, status TEXT)");\n\n // 创建界面元素\n QVBoxLayout *layout = new QVBoxLayout;\n QLabel *temperatureLabel = new QLabel("Temperature:");\n temperatureLineEdit = new QLineEdit;\n QLabel *lightLabel = new QLabel("Light Control:");\n lightLineEdit = new QLineEdit;\n QPushButton *submitButton = new QPushButton("Submit");\n QPushButton *refreshButton = new QPushButton("Refresh");\n\n layout->addWidget(temperatureLabel);\n layout->addWidget(temperatureLineEdit);\n layout->addWidget(lightLabel);\n layout->addWidget(lightLineEdit);\n layout->addWidget(submitButton);\n layout->addWidget(refreshButton);\n setLayout(layout);\n\n // 连接信号槽\n connect(submitButton, &QPushButton::clicked, this, &MainWindow::submitData);\n connect(refreshButton, &QPushButton::clicked, this, &MainWindow::refreshData);\n }\n\nprivate slots:\n void submitData() {\n // 获取温度和灯控信息\n float temperature = temperatureLineEdit->text().toFloat();\n QString light = lightLineEdit->text();\n\n // 插入数据到数据库\n QSqlQuery query;\n query.prepare("INSERT INTO temperature (value) VALUES (?)");\n query.addBindValue(temperature);\n query.exec();\n\n query.prepare("INSERT INTO light (status) VALUES (?)");\n query.addBindValue(light);\n query.exec();\n\n // 清空输入框\n temperatureLineEdit->clear();\n lightLineEdit->clear();\n }\n\n void refreshData() {\n // 查询最新的温度和灯控信息\n QSqlQuery query;\n query.exec("SELECT value FROM temperature ORDER BY id DESC LIMIT 1");\n if (query.next()) {\n float temperature = query.value(0).toFloat();\n temperatureLineEdit->setText(QString::number(temperature));\n }\n\n query.exec("SELECT status FROM light ORDER BY id DESC LIMIT 1");\n if (query.next()) {\n QString light = query.value(0).toString();\n lightLineEdit->setText(light);\n }\n }\n\nprivate:\n QSqlDatabase db;\n QLineEdit *temperatureLineEdit;\n QLineEdit *lightLineEdit;\n};\n\nint main(int argc, char *argv[]) {\n QApplication app(argc, argv);\n\n MainWindow window;\n window.show();\n\n return app.exec();\n}\n\n\n在这个示例中,使用了SQLite数据库来保存温度和灯控信息。通过QSqlQuery类执行SQL语句来插入和查询数据。submitData()函数将温度和灯控信息插入到对应的数据库表中,refreshData()函数从数据库中查询最新的数据并更新到QWidget界面上。\n\n请注意,上述示例代码仅供参考,实际使用时还需要根据具体需求进行修改和完善。\n\n数据审核实现思路:\n\n1. 设置数据上限: 在代码中添加数据上限判断,例如设定温度上限为30度。\n2. 插入数据时判断: 当新插入的温度数据超过上限时,执行以下操作:\n - 将超过上限的旧数据删除。\n - 将最新的数据插入数据库。\n3. 刷新数据时更新界面: 确保界面上显示的温度数据是最新的且符合上限限制。\n\n代码示例:\n\nc++\n// ... (其他代码)\n\nprivate slots:\n void submitData() {\n // 获取温度和灯控信息\n float temperature = temperatureLineEdit->text().toFloat();\n QString light = lightLineEdit->text();\n\n // 判断温度是否超过上限\n if (temperature > 30) {\n // 删除旧数据\n QSqlQuery query;\n query.exec("DELETE FROM temperature WHERE id = (SELECT MAX(id) FROM temperature)");\n }\n\n // 插入数据到数据库\n QSqlQuery query;\n query.prepare("INSERT INTO temperature (value) VALUES (?)");\n query.addBindValue(temperature);\n query.exec();\n\n // ... (其他代码)\n }\n\n// ... (其他代码)\n\n\n注意: 以上代码示例仅供参考,实际使用时需根据具体需求进行调整和完善。\n


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

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