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()可以直接移動到某一行記錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章