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));  //为关系型字段设置默认代理组件

效果如图所示:

相关推荐

  1. 数据库】第二章 关系模型介绍

    2024-03-10 09:04:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 09:04:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 09:04:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 09:04:02       87 阅读
  4. Python语言-面向对象

    2024-03-10 09:04:02       96 阅读

热门阅读

  1. sql中如何添加数据

    2024-03-10 09:04:02       43 阅读
  2. 物联网IOT发展智慧农业 助力乡村振兴

    2024-03-10 09:04:02       54 阅读
  3. mysql8 MGR集群部署

    2024-03-10 09:04:02       38 阅读
  4. 探讨:C#运行程序文件并获取输出的小问题

    2024-03-10 09:04:02       45 阅读
  5. STM32详细介绍

    2024-03-10 09:04:02       37 阅读