可视化数据库操作

在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 "widget.h"
#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");
    db.setDatabaseName("C:/Users/Lenovo/Desktop/Qtpros/QtDB/script/StuMS.db");
    if(!db.open()){
        qCritical("Can't open database: %s(%s)",
        db.lastError().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 < list.length(); i++)
   {
       model->removeRow(list.at(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();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值