使用 QT 和 SQLite 数据库实现智能灯界面,实时显示最新信息

本示例演示如何使用 QT 和 SQLite 数据库实现一个智能灯界面。用户可以选择灯光的模式,数据将实时存储在数据库中,并在界面上显示最新的模式信息。

界面设计

  • QComboBox:用于选择灯光模式。* QPushButton:用于显示最新模式数据的按钮。* QLabel:用于显示最新模式信息。

代码实现

mainwindow.hcpp#ifndef MAINWINDOW_H#define MAINWINDOW_H

#include #include <QtSql/QSqlDatabase>#include <QtSql/QSqlQuery>#include

QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACE

class MainWindow : public QMainWindow{ Q_OBJECT

public: MainWindow(QWidget *parent = nullptr); ~MainWindow();

private slots: void on_modeComboBox_currentIndexChanged(int index); void on_showDataButton_clicked();

private: Ui::MainWindow *ui; QSqlDatabase db;

void createTable();    void insertData(const QString& mode);    void updateLatestData();};

#endif // MAINWINDOW_H

mainwindow.cppcpp#include 'mainwindow.h'#include 'ui_mainwindow.h'

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this);

// 创建数据库连接    db = QSqlDatabase::addDatabase('QSQLITE');    db.setDatabaseName(':memory:');    if (!db.open()) {        qDebug() << 'Failed to connect to database.';        return;    }

// 创建表格    createTable();}

MainWindow::~MainWindow(){ delete ui;}

void MainWindow::createTable(){ QSqlQuery query; query.exec('CREATE TABLE IF NOT EXISTS light_modes (' 'id INTEGER PRIMARY KEY AUTOINCREMENT,' 'mode TEXT,' 'timestamp DATETIME DEFAULT CURRENT_TIMESTAMP)');}

void MainWindow::insertData(const QString& mode){ QSqlQuery query; query.prepare('INSERT INTO light_modes (mode) VALUES (:mode)'); query.bindValue(':mode', mode); if (!query.exec()) { qDebug() << 'Failed to insert data into table.'; }}

void MainWindow::updateLatestData(){ QSqlQuery query; query.exec('SELECT mode, timestamp FROM light_modes ORDER BY id DESC LIMIT 1'); if (query.next()) { QString mode = query.value(0).toString(); QString timestamp = query.value(1).toString(); ui->latestModeLabel->setText('Latest mode: ' + mode + ' (timestamp: ' + timestamp + ')'); } else { ui->latestModeLabel->setText('No data available.'); }}

void MainWindow::on_modeComboBox_currentIndexChanged(int index){ QString mode = ui->modeComboBox->currentText(); insertData(mode);}

void MainWindow::on_showDataButton_clicked(){ updateLatestData();}

main.cppcpp#include 'mainwindow.h'

#include

int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec()

QT 智能灯界面:选择模式,数据库存储,实时显示最新信息

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

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