本文主要是介绍Qt QSqlRelationalTableModel关系数据表模型的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
重点:
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)); //为关系型字段设置默认代理组件
效果如图所示:
这篇关于Qt QSqlRelationalTableModel关系数据表模型的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!