- 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));