以下是一个简单的示例代码,演示了如何使用 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'。

Qt 和 SQLite 实现模式选择和数据库显示

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

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