查询模型QSqlQueryModel
1. 实例化模型:QSqlQueryModel model;
2. 表头:model.setHeaderData(0, Qt::Horizotal, "");
3. 执行sql语句:model.setQuery("select * from tableName");
4. 实例化视图:QTableView view;
5. 视图设置数据源:view.setModel(model);
注意:setQuery执行sql语句后,结果集在model中
操作model
行列数:rowCount() /columnCount()
索引:index()
记录:record()
清空:clear()
表格模型QSqlTableModel(操作指定的数据表)
1. 实例化模型:QSqlTableModel model;
2. 指定数据表:model.setTable("tableName");
3. 表头:model.setHeaderData(0, Qt::Horizotal, "");
4. 查询显示数据:model.select();
5. 实例化视图:QTableView view;
6. 设置编辑策略:view.setEditStrategy(QSqlTableModel::OnManualSubmit);
7. 视图设置数据源:view.setModel(model);
操作model
1. 单选(获取当前行)
view->currentIndex().row();
2. 多选
QItemSelectionModel *select = selectionModel();
QModelIndexList list = select->selectrows();
3. 增
QSqlRecord temp = model->record(); // 空记录
model->insertRecord(model->rowCount(), recore);
4. 删
QItemSelectionModel *select = selectionModel();
QModelIndexList list = select->selectrows();
model->removeRows(list.at(0).row(), list.size());
5. 改
QModelIndex modelIndex = currentIndex();
modelIndex.data().toInt(); // 获取当前单元格的值
modelIndex.setData(100);
6. 查
setFilter("id=1"); 筛选
setSort(col, Qt::AscendingOrder); 升序
select(); 在筛选和排序的条件下,查询结果
7. 事务
tarnsaction() 开启事务
commit() 提交
rollback() 回滚
submitAll() 真正在数据库中执行操作(增删改操作会先保存在model中)
revertAll() 取消修改
8. 根据行列指定单元格
QModelIndex index = model.index(row, col, QModelIndex()); // 索引
model.setData(index, Qvariant()); // 数据
qDebug()<<"row: "<<index.row();
qDebug()<<"col: "<<index.column();
qDebug()<<"data: "<<index.data();