Chinaunix首页 | 论坛 | 博客
  • 博客访问: 556587
  • 博文数量: 63
  • 博客积分: 533
  • 博客等级: 中士
  • 技术积分: 1146
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-24 17:56
文章分类

全部博文(63)

文章存档

2016年(1)

2014年(23)

2013年(17)

2012年(22)

分类: Mysql/postgreSQL

2013-04-29 09:40:16

该类为单张的数据库表提供了一个可编辑的数据模型,它支持外键,除此之外和QSqlTableModel没有什么不同

  1. model = new QSqlRelationalTableModel(this);  
  2. model->setEditStrategy(QSqlTableModel::OnFieldChange); //属性变化时写入数据库  
  3. model->setTable("student");  
  4. model->setRelation(2,QSqlRelation("course","id","name"));//将student表的第三个属性设为course表的id属性的外键,并将其显示为course表的name属性的值  
  5. model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));  
  6. model->setHeaderData(1, Qt::Horizontal, QObject::tr("Name"));  
  7. model->setHeaderData(2, Qt::Horizontal, QObject::tr("Course"));  
  8. model->select();  
  9. tableView->setModel(model);  

 

如果我们希望用户更改课程属性时,只能在课程表中已有的课程中进行选择,而不能随意填写课程,那么Qt中的QSqlRelationalDelegate委托类就能实现这个功能

  1. tableView->setItemDelegate(new QSqlRelationalDelegate(tableView));  
转自:http://blog.csdn.net/reborntercel/article/details/7003364
阅读(4247) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~