QSqlTableModel 类使用

QSqlTableModel类的主要函数

函数功能描述
QSqlDatabase  database()返回数据库的连接
void  setTable(QString &tableName)设置数据表的名称
QString tableName()返回数据库名称
void setFilter(QString &filter)设置过滤条件
void setSort(int column,Qt::SortOrder order)设置排序字段和排序规则,调用select()才生效
void sort(int column,Qt::SortOrder order)按列号和排序规则立即进行排序并获取数据
void setEditStrategy(EditStrategy strategy)设置编辑策略
bool setHeaderData(int section,Qt::Orientation orientation,QVariant&value)设置表头,设置字段显示名称
bool isDirty()若有未更新到数据库的修改,返回true,否则false
int fieldIndex(QString &fieldName)根据字段名称返回其在模型中的序号,不存在返回-1
QSqlIndex primaryKey()数据表的主索引
int rowCount()返回记录条数
bool select()查询数据表的数据,并使用设置的排序和过滤规则
bool selectRow(int row)刷新获取指定行号的记录
void clear()清除数据模型,释放所有获取的数据
QSqlRecord record()返回一条空记录,只有字段名,可用来获取字段信息
QSqlRecord record(int row)返回行号的一条记录,包含记录数据
bool setRecord(int row,QSqlRecord&values)更新一条记录的数据到数据模型,源和目标之间通过字段吗匹配,而不是按位置匹配
bool insertRecord(int row,QSqlRecord&record)在行号row之前插入一条记录
boo insertRows(int row,int count)在行号row之前插入count空行
bool removeRows(int row,int count)从行号row开始删除count行,编辑策略为OnManualSubmit,需要调用submitAll()才从数据表里删除
void revertRow(int row)取消行号row的修改,
void revertAll()取消所有未提交的修改
bool submit()提交当前行的修改到数据库
bool submitAll()提交所有未更新的修改到数据库。

void QSqlTableModel::setSort(int column,Qt::SortOrder order)

第二个参数为枚举类型:Qt::AscendingOrder 表示升序   Qt::DescendingOrder 表示降序 

void QSqlTableModel::setEditStrategy(EditStrategy strategy)

参数为枚举类型:QSqlTableModel::OnFieldChange 字段值变化时立即更新到数据库

                             QSqlTableModel::OnRowChange 当前行变化时更新到数据库

                             QSqlTableModel::OnManualSubmit  所有修改暂时缓存,手动调用submitAll保存

QItemSectionModel 选择模型

QItemSectionModel * theSection = new QItemSectionModel(QSqlTableModel)

当用户在TableView上操作时,获取当前选择的行、列信息,并在选择的单元格变化时发出currentChanged()信号,当前行变化时,发射currentRowChanged()信号。

QSqlRecord 表示记录的类

QSqlRecord   QSqlTableModel::record()  返回只用字段定义没有数据

QSqlRecord   QSqlTableModel::record(int row)  返回行号row的记录,包括字段定义和数据

                                                                QSqlRecord 类的主要函数

函数原型功能描述
void clear()清除记录的所有字段定义和数据
void clearValues()清除所有字段的数据,将数据内容置为null
bool contains(QSting &name)记录是否包含名称为name的字段
bool isEmpty()记录里没有字段返回true,否则false
int count()记录的字段个数
QString fieldName(int index)序号为index的字段名称
int indexOf(QString&name)

名称为name的字段序号,不存在返回-1

QSqlField field(QString&name)返回字段名称为name 的字段对象
QVariant value(QString&name)返回字段名称为name 的字段的值
void setValue(QString&name,QVariant&val)设置字段名称为name 的值
bool isNull(QString&name)字段名称为name 的数据是否为空
void setNull(QString&name)设置字段名称为name 的字段值为空

QSqlField类

接口函数功能描述
void clear()清除西段数据,设为NULL,如果字段是只读的,不清除
bool isNull()判断字段值是否为空
bool setReadOnly(bool readonly)设字段为只读
QVariant value()返回字段值
void setValue()设置字段值

QDataWidgetMapper

QDataWidgetMapper用于建立界面组件与数据模型之间的映射,可以将界面的QLineEdit、QCombobox等组件与数据模型的一个字段关联起来。

创建QDataWidgetMapper变量后,用setModel()设置关联的数据模型,setSubmitPolicy()设置数据提交策略,AutoSubmit和ManualSubmit两种方式。

addMapping()用于设置界面组件与数据模型的列的映射,程序在界面上的各编辑组件与数据表的各字段之间建立了映射关系。

dataMapper->addMapping(ui.editName,table->fieldIndex("name"));

QDataWidgetMapper还有toFirst()、toPrevious()、toNext()、toLast()用于在记录间移动,

setCurrentIndex()和setCurrentModelIndex()可以直接移动到某一行记录

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值