可视化数据库——model(数据)/view(视图)

 一、创建显现数据库视图

1、创建并打开数据库

2、设置模型
    QSqlTableModel *model = new QSqlTableModel(this);
    //模型自动关联刚刚打开的数据库
    model->setTable("student");//关联数据库中的表student
    
3、把model放在view
    ui->tableView->setModel(model);//tableView是设计师中的QTableView
    model->select();//显示model里的数据

  

二、细节

    model->setHeaderData(0, Qt::Horizontal, "学号");//设置表头
    //设置model的编辑策略为手动提交修改
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    //设置view视图上不允许修改数据
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

 

三、添加删除和保存

  

//添加
void Widget::on_buttonAdd_clicked()
{
    //添加空记录
    QSqlRecord record = model->record(); //获取空记录
    //获取行号
    int row = model->rowCount();
    model->insertRecord(row, record);
}
//提交(即确定)
void Widget::on_buttonSure_clicked()
{
    model->submitAll(); //提交动作
}
//撤销
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 name = ui->lineEdit->text();
    QString str = QString("name = '%1'").arg(name);
    model->setFilter(str);
    model->select();
}

 

posted @ 2018-10-10 21:14  雪落梅藏  阅读(1243)  评论(0编辑  收藏  举报