該類為單張的數據庫表提供了一個可編輯的數據模型,它支持外鍵,除此之外和QSqlTableModel沒有什么不同
- model = new QSqlRelationalTableModel(this);
- model->setEditStrategy(QSqlTableModel::OnFieldChange); //屬性變化時寫入數據庫
- model->setTable("student");
- model->setRelation(2,QSqlRelation("course","id","name"));//將student表的第三個屬性設為course表的id屬性的外鍵,并將其顯示為course表的name屬性的值
- model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
- model->setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));
- model->setHeaderData(2, Qt::Horizontal, QObject::tr("Course"));
- model->select();
- tableView->setModel(model);
如果我們希望用戶更改課程屬性時,只能在課程表中已有的課程中進行選擇,而不能隨意填寫課程,那么Qt中的QSqlRelationalDelegate委托類就能實現這個功能
- tableView->setItemDelegate(new QSqlRelationalDelegate(tableView));


