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_pushButton_clicked();
private:
Ui::MainWindow *ui;
QSqlDatabase db;
};
#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQuery>
#include <QSqlError>
#include <QMessageBox>
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()) {
QMessageBox::critical(this, 'Error', 'Unable to connect to the database');
}
// 创建表
QSqlQuery query;
query.exec('CREATE TABLE IF NOT EXISTS modes (id INTEGER PRIMARY KEY AUTOINCREMENT, mode TEXT)');
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
// 获取用户选择的模式
QString selectedMode = ui->comboBox->currentText();
// 插入数据到数据库
QSqlQuery query;
query.prepare('INSERT INTO modes (mode) VALUES (:mode)');
query.bindValue(':mode', selectedMode);
query.exec();
if (query.lastError().isValid()) {
QMessageBox::critical(this, 'Error', query.lastError().text());
} else {
QMessageBox::information(this, 'Success', 'Mode inserted into database');
}
}
// displaywindow.h
#ifndef DISPLAYWINDOW_H
#define DISPLAYWINDOW_H
#include <QDialog>
#include <QtSql>
namespace Ui {
class DisplayWindow;
}
class DisplayWindow : public QDialog
{
Q_OBJECT
public:
explicit DisplayWindow(QWidget *parent = nullptr);
~DisplayWindow();
private:
Ui::DisplayWindow *ui;
QSqlTableModel *model;
};
#endif // DISPLAYWINDOW_H
// displaywindow.cpp
#include "displaywindow.h"
#include "ui_displaywindow.h"
DisplayWindow::DisplayWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::DisplayWindow)
{
ui->setupUi(this);
// 连接到 SQLite 数据库
QSqlDatabase db = QSqlDatabase::addDatabase('QSQLITE');
db.setDatabaseName('database.db');
if (!db.open()) {
QMessageBox::critical(this, 'Error', 'Unable to connect to the database');
}
// 创建数据模型
model = new QSqlTableModel(this, db);
model->setTable('modes');
model->select();
// 设置数据模型到TableView
ui->tableView->setModel(model);
}
DisplayWindow::~DisplayWindow()
{
delete ui;
}
// main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "displaywindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
DisplayWindow displayWindow;
QObject::connect(&w, &MainWindow::destroyed, &displayWindow, &DisplayWindow::show);
return a.exec();
}
请注意,您需要将代码中的数据库名称更改为您要使用的实际数据库名称。此示例代码中使用的数据库名称为'database.db'。
原文地址: https://www.cveoy.top/t/topic/fBhQ 著作权归作者所有。请勿转载和采集!