溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

控件與數(shù)據(jù)庫(kù)綁定C++實(shí)踐案例

發(fā)布時(shí)間:2024-09-03 11:27:55 來(lái)源:億速云 閱讀:78 作者:小樊 欄目:編程語(yǔ)言

在這個(gè) C++ 實(shí)踐案例中,我們將使用 Qt 框架和 SQLite 數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的記事本應(yīng)用程序。這個(gè)應(yīng)用程序?qū)粋€(gè)文本編輯器和一個(gè)用于保存和加載數(shù)據(jù)的數(shù)據(jù)庫(kù)。

首先,確保你已經(jīng)安裝了 Qt 和 SQLite。接下來(lái),我們將創(chuàng)建一個(gè)新的 Qt Widgets Application 項(xiàng)目并命名為 “NotepadApp”。

  1. 添加必要的頭文件和庫(kù):

在項(xiàng)目的 .pro 文件中,添加以下內(nèi)容:

QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  1. 設(shè)計(jì)用戶界面:

使用 Qt Designer,創(chuàng)建一個(gè)簡(jiǎn)單的用戶界面,包括一個(gè) QTextEdit(用于編輯文本)和兩個(gè) QPushButton(用于保存和加載數(shù)據(jù))。將這些控件連接到相應(yīng)的槽函數(shù)。

  1. 創(chuàng)建數(shù)據(jù)庫(kù)和表:

在 mainwindow.cpp 文件中,包含以下頭文件:

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>

然后,在 MainWindow 構(gòu)造函數(shù)中,創(chuàng)建數(shù)據(jù)庫(kù)和表:

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

  // 創(chuàng)建數(shù)據(jù)庫(kù)
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("notedata.db");

  if (!db.open()) {
    qDebug() << "Error: Failed to connect to database.";
  } else {
    qDebug() << "Connected to database.";
  }

  // 創(chuàng)建表
  QSqlQuery query;
  query.exec("CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT)");
}
  1. 實(shí)現(xiàn)保存和加載功能:

在 mainwindow.h 文件中,添加以下槽函數(shù)聲明:

private slots:
  void on_saveButton_clicked();
  void on_loadButton_clicked();

然后,在 mainwindow.cpp 文件中,實(shí)現(xiàn)這些槽函數(shù):

void MainWindow::on_saveButton_clicked() {
  QString content = ui->textEdit->toPlainText();

  QSqlQuery query;
  query.prepare("INSERT INTO notes (content) VALUES (:content)");
  query.bindValue(":content", content);
  query.exec();

  qDebug() << "Note saved.";
}

void MainWindow::on_loadButton_clicked() {
  QSqlQuery query;
  query.exec("SELECT * FROM notes ORDER BY id DESC LIMIT 1");

  if (query.next()) {
    QString content = query.value("content").toString();
    ui->textEdit->setPlainText(content);
  } else {
    qDebug() << "No note found.";
  }
}

現(xiàn)在,你已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單的記事本應(yīng)用程序,它可以將文本保存到 SQLite 數(shù)據(jù)庫(kù)中,并從數(shù)據(jù)庫(kù)中加載文本。運(yùn)行應(yīng)用程序并測(cè)試其功能。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI