小工具知识网

当前位置: 首页 > 行业知识 > Qt QSqlRelationalTableModel关系数据表模型的使用

行业知识

Qt QSqlRelationalTableModel关系数据表模型的使用

2026-11-12 23:02:52 来源:互联网转载

���点:

1.QSqlRelationalTableModel可以关联多个数据表。

以studInfo作为QTableView的模型,其中departID和majorId存储的是编码,因为使用QSqlRelationalTableModel模型,就可以将dedpartments表中对应departID编码的名称和majors表中对应的majorId编码的名称显示出来。

2.利用setRelation的方法,关联两个对应的表格。

tabModel=new QSqlRelationalTableModel(this,DB);    tabModel->setTable("studInfo");     //设置数据表    tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit);  //编辑策略    tabModel->setSort(tabModel->fieldIndex("studID"),Qt::AscendingOrder);    selModel=new QItemSelectionModel(tabModel,this);     //创建选择模型    connect(selModel,&QItemSelectionModel::currentChanged,this, &MainWindow::do_currentChanged);//    connect(selModel,SIGNAL(currentChanged(QModelIndex,QModelIndex)),//            this,SLOT(do_currentChanged(QModelIndex,QModelIndex)));    ui->tableView->setModel(tabModel);    ui->tableView->setSelectionModel(selModel);    tabModel->setHeaderData(tabModel->fieldIndex("studID"),  Qt::Horizontal, "学号");    tabModel->setHeaderData(tabModel->fieldIndex("name"),    Qt::Horizontal, "姓名");    tabModel->setHeaderData(tabModel->fieldIndex("gender"),  Qt::Horizontal, "性别");    tabModel->setHeaderData(tabModel->fieldIndex("departID"),Qt::Horizontal, "学院");    tabModel->setHeaderData(tabModel->fieldIndex("majorID"), Qt::Horizontal, "专业");    //设置代码字段的关系    tabModel->setRelation(tabModel->fieldIndex("departID"),                          QSqlRelation("departments","departID","department")); //学院    tabModel->setRelation(tabModel->fieldIndex("majorID"),                          QSqlRelation("majors","majorID","major"));            //专业    ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));  //为关系型字段设置默认代理组件

效果如图所示:

上一篇:服务器怎么配置证书?

下一篇:去哪里买服务器?