头文件
#include <QTableView>// 显示数据表
QSqlTableModel *model_;
QTableView *tableview;
model_=new QSqlTableModel; //负责提取数据
model_->setTable("user");
model_->select();
tableview=new QTableView;//负责显示数据
tableview->setModel(model_);
QVBoxLayout *lay=new QVBoxLayout(this);
lay->addWidget(tableview);
效果图
修改表的显示 是通过tablemodel 而不是 tableview
model_->setHeaderData(0,Qt::Horizontal,"用户名");
model_->setHeaderData(1,Qt::Horizontal,"密码");
model_->setHeaderData(2,Qt::Horizontal,"问题");
model_->setHeaderData(3,Qt::Horizontal,"答案");
**密码隐藏**
tableview->hideColumn(1);//异常第二列密码信息
修改操作
model_->setEditStrategy(QSqlTableModel::OnManualSubmit);
//编辑策略 OnFieldChange, OnRowChange//行改变, OnManualSubmit//手动提交
**需要手动提交修改 **
model_->submitAll();
删除槽函数
void Widget::on_deletebutton_clicked()
{
//通过 view去获取被选中部分的数据的model
QItemSelectionModel *itemmodle=tableview->selectionModel();
//通过选中的数据结构 获取这些格子的 ModelIndex
QModelIndexList selectList=itemmodle->selectedIndexes();
QList<int>listRow;
for(int i=0;i<selectList.size();++i){
QModelIndex index=selectList.at(i);
listRow<<index.row();
}
while(listRow.size()>0){
int row =listRow.at(0);
listRow.removeAll(row);//删除重复的行数
model_->removeRow(row);
}
if(model_->submitAll())
{
QMessageBox::information(this,"information","Delete Success!!!");
}
}
插入数据的槽函数:
void Widget::on_addbutton_clicked()
{
QSqlRecord record=model_->record();
model_->insertRecord(-1,record);
}
效果:
修改后