QSqlTableModel表格模型操作-mysql和sqlite

运行结果图:

QSqlTableModel表格模型操作-mysql和sqlite_第1张图片

QSqlTableModel操作QSQLITE:

a) 连接QSQLIITE驱动。

b) 不用连接数据库那些代码

c) 其他代码和操作MYSQL相同

QSqlTableModel表格模型操作-mysql和sqlite_第2张图片

 

MYWidget.CPP

#include "widget.h"
#include "ui_widget.h"
#include//数据库
#include
#include//sql错误信息
#include//sql语句类
#include//泛型
#include
#include//表格模型,显示模型的数据  需要试图QTableview来显示
#include//数据库记录
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //打印Qt支持的数据库驱动
    qDebug()<setTable("student");//指定使用哪个表,前提库已打开

    //把mod放在view
    ui->tableView->setModel(mod);

    // 显示model里的数据
    mod->select();

    //改列头部名称
    mod->setHeaderData(0,Qt::Horizontal,"学号");

    //设置mod的编辑模式,手动提交修改
    mod->setEditStrategy(QSqlTableModel::OnManualSubmit);

    //设置view中的数据库不能被修改
    //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);


}

Widget::~Widget()
{
    delete ui;
}

//增加
void Widget::on_buttonadd_clicked()
{
    //添加空记录
    QSqlRecord record=mod->record();//获取空记录
    //获取行号
    int row=mod->rowCount();
    mod->insertRecord(row,record);//像数组从0开始,-1直接表尾插
}
//确定
void Widget::on_buttonsure_clicked()
{
    //提交
    mod->submitAll();
}
//取消
void Widget::on_buttoncancel_clicked()
{
    //取消
    mod->revertAll();
    mod->submitAll();
}
//删除
void Widget::on_buttondelete_clicked()
{
    //获取选中的模型
    QItemSelectionModel* smod= ui->tableView->selectionModel();
    //取出模型的索引
    QModelIndexList list= smod->selectedRows();
    //删除所有选中的行
    for(int i=0;iremoveRow( list.at(i).row());
    }
}

void Widget::on_buttonfind_clicked()
{
    QString name=ui->lineEdit->text();
    QString str=QString("name = '%1'").arg(name);
    mod->setFilter(str);
    mod->select();
}

void Widget::on_pushButton_clicked()
{
    mod->setTable("student");
    ui->tableView->setModel(mod);
    mod->select();
    mod->setHeaderData(0,Qt::Horizontal,"学号");
}

你可能感兴趣的:(数据库,ui,qt)