QT 智能灯界面:选择模式,数据库存储,实时显示最新信息
使用 QT 和 SQLite 数据库实现智能灯界面,实时显示最新信息
本示例演示如何使用 QT 和 SQLite 数据库实现一个智能灯界面。用户可以选择灯光的模式,数据将实时存储在数据库中,并在界面上显示最新的模式信息。
界面设计
- QComboBox:用于选择灯光模式。* QPushButton:用于显示最新模式数据的按钮。* QLabel:用于显示最新模式信息。
代码实现
mainwindow.hcpp#ifndef MAINWINDOW_H#define MAINWINDOW_H
#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()
原文地址: https://www.cveoy.top/t/topic/qgU4 著作权归作者所有。请勿转载和采集!