行业知识
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)); //为关系型字段设置默认代理组件 效果如图所示:
上一篇:服务器怎么配置证书?
下一篇:去哪里买服务器?