温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

控件与数据库绑定C++实践案例

发布时间:2024-09-03 11:27:55 来源:亿速云 阅读:79 作者:小樊 栏目:编程语言

在这个 C++ 实践案例中,我们将使用 Qt 框架和 SQLite 数据库创建一个简单的记事本应用程序。这个应用程序将包含一个文本编辑器和一个用于保存和加载数据的数据库。

首先,确保你已经安装了 Qt 和 SQLite。接下来,我们将创建一个新的 Qt Widgets Application 项目并命名为 “NotepadApp”。

  1. 添加必要的头文件和库:

在项目的 .pro 文件中,添加以下内容:

QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
  1. 设计用户界面:

使用 Qt Designer,创建一个简单的用户界面,包括一个 QTextEdit(用于编辑文本)和两个 QPushButton(用于保存和加载数据)。将这些控件连接到相应的槽函数。

  1. 创建数据库和表:

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

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

然后,在 MainWindow 构造函数中,创建数据库和表:

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

  // 创建数据库
  QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  db.setDatabaseName("notedata.db");

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

  // 创建表
  QSqlQuery query;
  query.exec("CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT)");
}
  1. 实现保存和加载功能:

在 mainwindow.h 文件中,添加以下槽函数声明:

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

然后,在 mainwindow.cpp 文件中,实现这些槽函数:

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.";
  }
}

现在,你已经创建了一个简单的记事本应用程序,它可以将文本保存到 SQLite 数据库中,并从数据库中加载文本。运行应用程序并测试其功能。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI