Qt 和 SQLite 实现模式选择和数据保存
以下是一个简单的示例代码,演示了如何使用 Qt 和 SQLite 实现用户模式选择功能,并将选择的模式保存到数据库,并在另一个界面显示最新保存的模式信息。
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtSql>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_modeComboBox_currentIndexChanged(const QString &mode);
void on_showButton_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
};
#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 连接到 SQLite 数据库
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
if (!db.open()) {
qDebug() << "无法打开数据库";
}
// 创建数据表
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS modes (id INTEGER PRIMARY KEY AUTOINCREMENT, mode TEXT)");
// 添加模式选项到 ComboBox
ui->modeComboBox->addItem("模式1");
ui->modeComboBox->addItem("模式2");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_modeComboBox_currentIndexChanged(const QString &mode)
{
// 将选中的模式插入到数据库表中
QSqlQuery query;
query.prepare("INSERT INTO modes (mode) VALUES (:mode)");
query.bindValue(":mode", mode);
if (!query.exec()) {
qDebug() << "插入数据失败";
}
}
void MainWindow::on_showButton_clicked()
{
// 显示数据库表的最新信息
QSqlQuery query;
query.exec("SELECT * FROM modes ORDER BY id DESC LIMIT 1");
if (query.next()) {
QString mode = query.value("mode").toString();
qDebug() << "最新模式:" << mode;
}
}
// main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
在这个示例中,我们创建了一个名为modes的数据库表,它有两个列:id和mode。id是自增的主键,mode保存用户选择的模式。
在主界面上,我们添加了一个QComboBox控件,用于选择模式。当用户选择一个模式时,我们将其插入到数据库表中。
另外,我们还添加了一个按钮,当用户点击该按钮时,我们从数据库表中获取最新插入的模式,并在控制台中显示出来。
请注意,该示例假设您已经安装了 Qt 和 SQLite,并且将 SQLite 数据库文件命名为database.db,并放置在与可执行文件相同的目录中。如果数据库文件不存在,它将自动创建。
原文地址: https://www.cveoy.top/t/topic/fBhN 著作权归作者所有。请勿转载和采集!