QT学习记录-QSqlTableModel

QT中,数据模型model、数据显示view是由MVC发展出来的。
model负责组织存储数据,view负责显示数据,然后用户可以在可视化界面编辑数据(control)。

大体步骤就是:
-创建数据model
-select查询数据导入model中
-创建view,视图设置之前设置好的model
-创建widget显示view

QSqlTableModel就是QT中一个简单的数据库表格可视化操作model类。
①在所有操作之前,要先连接数据库创建数据库连接句柄

QSqlDatabase db;   //= new QSqlDatabase  //数据库句柄
db.setDatabaseName(QString)  //设置数据库名字
db.setUserName(QString) //设置数据库账户名
db.setHosrName(QString) //设置数据库ip地址
db.setPort(int) //设置数据库port

然后连接数据库,成功之后就可以操作数据库(增删改查)

if (!db.open())
{
    return false;
}

②创建数据库表格模型model句柄

QSqlTabelModel  *model = QSqlTabelModel(this);
model->setTable(tabelName);  //设置模型要操作的表名
model->setEditStrategy(QSqlTableModel::OnManualSubmit);//设置表格编辑策
略,修改后需要手动提交数据库事务
model->select(); //model查询表格,组织数据模型
model->setHeaderData(0,Qt::Horizontal, tr("ID"));//设置表头内容,第一个参数是列从0开始,第二个参数是方向(不清楚具体作用,已知可以更改后面内容的大小写),第三个参数就是要设置的内容
model->setHeaderData(1,Qt::Horizontal,tr("First name"));
model->setHeaderData(2,Qt::Horizontal,tr("Last name"));

③创建数据库表格显示view句柄

QTableView *view = new QTableView;
view->setModel(model);//model和view绑定
view->resizeColumnToContents(); //根据显示内容重新设置列宽

④class TableEditor : public QWidget
这个类中有提交,回滚,退出三个按钮
创建一个按钮盒QDialogButoonBox buttonBox = new QDialogButtonBox(Qt::Vertical);
然后用buttonBox->addButton()依次添加三个按钮
⑤提交按钮的槽函数submit()

{
    model->database().transaction(); //数据库模型解析用户的行为
    if (model.submitAll()){
    model->database().commit();//如果提交成功,则确认提交
    }
    else{
    model->database().rollback();//如果提交失败,则回滚用户操作
    }
}

回滚按钮的槽函数,revertAll()
退出按钮的槽函数,close()
⑥显示,布局

QHBoxLayout *lay = new QHBoxLayout;
lay->addWidget(view);
lay->addWidget(buttonBox);//按钮容器的基类是QWidget
setLayout(lay);//设置显示窗口的布局,包括布局中的内容

你可能感兴趣的:(QT笔记)