在Qt中,可视化操作用到了设计师designer中的view类,用于显示的处理数据,用已有的框架快速进行数据处理!!!
本环节主要是<QSqlTabelModel>头文件的使用:
1、select()接口主要是打印所选库中的数据,相当于使用sql语句:select * from student_info;
简单代码介绍:
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QSqlTableModel>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QDebug>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void closeConnection();
~Widget();
private slots:
void on_pb_add_clicked();
void on_pb_del_clicked();
void on_pb_sure_clicked();
void on_pb_cancel_clicked();
void on_pb_find_clicked();
private:
Ui::Widget *ui;
QSqlTableModel *model;
};
#endif // WIDGET_H
具体应用:
#include ""
#include "ui_widget.h"
#include <QSqlError>
#include <QSqlRecord>//保存记录
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE");
("C:/Users/Lenovo/Desktop/Qtpros/QtDB/script/");
if(!()){
qCritical("Can't open database: %s(%s)",
().text().toLocal8Bit().data(),
qt_error_string().toLocal8Bit().data());
}
//设置模型
model = new QSqlTableModel(this);
model->setTable("student_info"); //指定使用那个表//
//把model放在view上
ui->tableView->setModel(model);
//显示model里的数据
model->select(); //相当于select * from student_info;
//设置表头为自己熟悉的语言
model->setHeaderData(0, Qt::Horizontal, "学号");
model->setHeaderData(1, Qt::Horizontal, "姓名");
model->setHeaderData(2, Qt::Horizontal, "年级");
model->setHeaderData(3, Qt::Horizontal, "专业");
//设置model的模式为手动提交修改
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//设置view中的数据库不允许修改
//ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}
Widget::~Widget()
{
delete ui;
}
void Widget::closeConnection()
{
QSqlDatabase::database().close();
}
void Widget::on_pb_add_clicked()
{
//添加空记录
QSqlRecord record = model->record();//获取空记录
//获取空记录的行号
int row = model->rowCount();
//增加空的新记录,静待用户在界面输入
model->insertRecord(row,record);
}
void Widget::on_pb_del_clicked()
{
//获取选中的模型
QItemSelectionModel *sModel = ui->tableView->selectionModel();
//取出模型中的索引,一个索引代表一个行号
QModelIndexList list = sModel->selectedRows();
//删除所有选中的行
for(int i = 0; i < (); i++)
{
model->removeRow((i).row());
}
}
void Widget::on_pb_sure_clicked()
{
//提交所有的数据
model->submitAll();
}
void Widget::on_pb_cancel_clicked()
{
//取消所有动作
model->revertAll();
///提交取消动作
model->submitAll();
}
void Widget::on_pb_find_clicked()
{
QString str = ui->lineEdit->text();
model->setFilter(1);
QString sql = QString("id = '%1'").arg(str);
//以ID查找,设置过滤条件
model->setFilter(sql);
//select接口,显示所有的数据,相当于select * from student_info;
model->select();
}