QtCreator 使用SQL模型类(QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel)

32 篇文章 0 订阅
5 篇文章 1 订阅

Qt中的QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel

1 SQL查询模型,QSqlQueryModel

    QSqlQueryModel * model = new QSqlQueryModel(this);
    model->setQuery("select * from student");
    model->setHeaderData(0,Qt::Horizontal,tr("学号"));
    model->setHeaderData(1,Qt::Horizontal,tr("姓名"));
    model->setHeaderData(2,Qt::Horizontal,tr("课程"));
 
    QTableView * tableView = new QTableView(this);
    tableView->setModel(model);
    setCentralWidget(tableView);

 

2 SQL表格模型

若要成为只读模型,直接设置视图为

    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//可以设置为只读模型

    tableModel = new QSqlTableModel(this);
    tableModel->setTable("student");
    tableModel->select();
 
    tableModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ui->tableView->setModel(tableModel);
 

3 SQL关系表格模型(QSqlRelationalTableModel)

他继承自QSqlTableModel,并对他作了拓展,

. 关系QSqlRelation(const QString & tableName, const QString & indexColumn, const QString & displayColumn)

    QSqlRelationalTableModel *model = new QSqlRelationalTableModel(this);
    model->setTable("student");
 
    QSqlRelation sqlRelation("course","id","name");//设置关系
    model->setRelation(2,sqlRelation);
 
    model->select();
 
 
    QTableView *tableView = new QTableView(this);
    tableView->setModel(model);
    setCentralWidget(tableView);
 
    
    //QSqlRelationalDelegate委托类,可以为QSqlRelationalTableModel显示和编辑数据
 
    tableView->setItemDelegate(new QSqlRelationalDelegate(tableView));

注意点:

QSqlQuery:熟悉SQL语法,需要显示特定的数据(不需要将所有的数据显示出来)显示出来,就用它

QSqlTableModel:显示一个单独的表格

QSqlQueryModel:用来显示任意结果集,想使其可读/写,最好重新实现flags()和setDat()函数

QSqlRelationalDelegate:要实现关联的效果,需要先关联(model->setRelation()),再查询获得结果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值