赞
踩
拖拽左侧Table View控件到页面中,在右侧将其objectName 设置为"tableView",目的是将其设置为表格显示view。
拖拽左侧Push Button控件到页面中,分别为: 增加,删除,确认,取消,查找五个按钮。在右侧将其objectName 分别设置为"ButtonAdd" ; "ButtonDel" ; "ButtonSure" ; "ButtonCancel" ; ButtonFind。
拖拽左侧Line Edit控件到页面中,在右侧将其objectName 设置为"lineEdit",目的是将其设置为搜索框。
1.pro文件添加sql模块。
2.添加对应头文件
3.首先打印了 Qt 支持的数据库驱动。
4.然后使用 QSqlDatabase
添加了一个 QSQLITE
类型的数据库连接,打开了指定路径的数据库文件。
5.创建了一个 QSqlTableModel
对象 model
,并设置了要操作的表为 dbTT。
6.
将这个数据模型 model
绑定到 UI 中的 tableView
上,并设置编辑策略为手动提交修改。
7.启动程序查看连接情况。
//设置model的编辑模式,手动提交修改
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
添加上述代码更改数据无法直接修改,需要点击确定按钮,才能实现对数据修改操作,可以注释掉这行代码,直接修改数据库(不需要点击确定按钮)。
widget.ui界面右上角,右键点击按钮,转到槽,选中clicked(),点击OK。
分别将五个按钮转到槽,自动在头文件生成代码。
1.增
添加头文件
#include <QSqlRecord>
QSqlRecord类提供了对数据库记录的访问和操作功能。
2.删
3.确定
4.取消
5.查
最后效果:
代码演示:
widget.h
- #ifndef WIDGET_H
- #define WIDGET_H
- #include "ui_widget.h"
- #include <QWidget>
- #include <QSqlDatabase>
- #include <QSqlError>
- #include <QSqlQuery>
- #include <QDebug>
- #include <QObject>
- #include <QSqlTableModel>
- #include <QSqlRecord>
-
-
- namespace Ui {
- class Widget;
- }
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Widget(QWidget *parent = 0);
- ~Widget();
-
- private slots:
- void on_ButtonAdd_clicked();
-
- void on_ButtonCancel_clicked();
-
- void on_ButtonDel_clicked();
-
- void on_ButtonFind_clicked();
-
- void on_ButtonSure_clicked();
-
- private:
- Ui::Widget *ui;
- QSqlTableModel *model;
- };
-
- #endif // WIDGET_H
widget.cpp
- #include "widget.h"
- #include "ui_widget.h"
- #include <QWidget>
- #include <QSqlDatabase>
- #include <QSqlError>
- #include <QSqlQuery>
- #include <QDebug>
- #include <QObject>
- #include <QSqlTableModel>
-
-
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
-
- //打印Qt支持的数据库驱动
- qDebug() << QSqlDatabase::drivers();
- //添加数据库
- QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
- //设置数据库
- db.setDatabaseName("E:/TestSqllite.db");//info.db是数据库名称
-
- //打开数据库
- if(!db.open())
- {
- qDebug()<<"不能连接"<<"connect to mysql error"<<db.lastError().text();
- return ;
- }
- else
- {
- qDebug()<<"连接成功"<<"connect to mysql OK";
- }
- //设置模型
- model = new QSqlTableModel(this);
- model->setTable("dbTT");//指定使用那个表
-
- //把model放在view上
-
- ui->tableView->setModel(model);
- model->select();
-
- //设置model的编辑模式,手动提交修改
- model->setEditStrategy(QSqlTableModel::OnManualSubmit);
-
- //设置数据库不允许修改
- //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
-
- //修改表
- //model->setHeaderData(0,Qt::Horizontal,"ID");
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
-
-
- void Widget::on_ButtonAdd_clicked()
- {
- //添加空记录
- QSqlRecord record = model->record();//获取空记录
- //获取行号
- int row = model->rowCount();
-
- model->insertRecord(row,record);
- }
-
- void Widget::on_ButtonCancel_clicked()
- {
- model->revertAll();
- model->submitAll();
- }
-
- void Widget::on_ButtonDel_clicked()
- {
- //获取选中的模型
- QItemSelectionModel *sModel = ui->tableView->selectionModel();
- //取出模型中的索引
- QModelIndexList list = sModel->selectedRows();
- //删除所有选中的行
- for(int i = 0 ; i<list.size();i++){
- model->removeRow(list.at(i).row() );
- }
- }
-
- void Widget::on_ButtonFind_clicked()
- {
- QString dataID = ui->lineEdit->text();
-
- QString str = QString("dataID = '%1' ").arg(dataID);
-
- model->setFilter(str);
- model->select();
- }
-
- void Widget::on_ButtonSure_clicked()
- {
- model->submitAll();
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。