可视化数据库——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(); }