Qt可视化数据库操作Mode-View(十二)

1.设计ui界面:

图片

2.连接数据库并显示代码

widget.h

#include<QSqlTableModel>
private:
      QSqlTableModel *model;//定义一个model指针

widget.cpp

#include "widget.h" 
#include "ui_widget.h"
#include<QSqlDatabase>
#include<QDebug>
#include<QMessageBox>
#include<QSqlError>//lasterror用到的头文件
#include<QSqlQuery>//新建表用到的头文件
#include<QVariantList>//批量插入需要的头文件
//#include<QSqlTableModel>//ui里我用的表格
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //打印Qt支持的数据库驱动
    qDebug() << QSqlDatabase::drivers();
    /*("QSQLITE"静态数据库,不需要服务器,和文件一样,a.db
    , "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")*/
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//添加SQLITE数据库
    db.setHostName("0.0.0.0");//数据库服务器IP
    db.setUserName("eagle");//数据库用户名
    db.setPassword("123456");//数据库密码
    db.setDatabaseName("checksysterm");//使用哪个数据库
    //打开数据库
    if(!db.open())
    {
        QMessageBox::warning(this,"错误",db.lastError().text());
        return;
    }
    //设置模型
    model =new QSqlTableModel(this);
    model->setTable("test");//指定所用表
    //model->view
    ui->tableView->setModel(model);
    //show
    model->select();
}
Widget::~Widget()
{
    delete ui;
}

效果:
图片

3.逐个实现控件功能

1)改变显示的标题

    model->setHeaderData(0,Qt::Horizontal,"编号"); 
    model->setHeaderData(1,Qt::Horizontal,"现状");
    model->setHeaderData(2,Qt::Horizontal,"时间");

效果:(双击就可修改,可以直接修改数据库)
如果不想让人修改则设置如下:

ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

图片

2)添加按钮功能

//添加信息 
void Widget::on_buttonAdd_clicked()
{
    //添加空记录
    QSqlRecord record = model->record();//获取空记录
    int row =model->rowCount();//获取行号
    model->insertRecord(row,record);
}
//删除信息
void Widget::on_buttonDelete_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_pushButton_clicked()
{
    model->submitAll();//全部提交
}
//撤销按钮
void Widget::on_buttonReturn_clicked()
{
    model->revertAll();//撤销所有操作
    model->submitAll();//全部提交
}
//关闭按钮
void Widget::on_buttonClose_clicked()
{
    close();
}
//查找按钮
void Widget::on_buttonFind_clicked()
{
    //获取
    QString id = ui->lineEdit->text();
    QString str= QString("id=%1").arg(id);
    model->setFilter(str);
    model->select();
}

效果:
1)添加信息操作

图片

2)确定按钮,保存信息

图片

3)删除操作

图片

4)点击删除按钮后看见“!”

图片

5)点击确定后,删除成功

图片

6)输入需要id查找数据,点击查找按钮

图片

发布了54 篇原创文章 · 获赞 55 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/visual_eagle/article/details/105546873
今日推荐