Amazing, I found the answer myself digging in Qt examples. Here is the code:

Qt Code:
  1. model->setTable("centros_programas");
  2. model->setRelation(1, QSqlRelation("provincias", "id_provincias", "nombre"));
  3.  
  4. model->setEditStrategy(QSqlTableModel::OnManualSubmit);
  5. model->select();
  6.  
  7. model->setHeaderData(0, Qt::Horizontal, QObject::tr("Id"));
  8. model->setHeaderData(1, Qt::Horizontal, QObject::tr("Provincia"));
  9. model->setHeaderData(2, Qt::Horizontal, QObject::tr("Centro/Programa"));
  10. model->setHeaderData(3, Qt::Horizontal, QObject::tr("Tipo"));
  11.  
  12. ui->comboBoxProvincia->setModel(model->relationModel(1) );
  13. ui->comboBoxProvincia->setModelColumn(model->relationModel(1)->fieldIndex("nombre"));
  14.  
  15. ui->table->setModel(model);
  16. ui->table->setColumnHidden(0, true);
  17.  
  18. ui->table->setItemDelegate( new QSqlRelationalDelegate( ui->table ));
  19.  
  20. mapper = new QDataWidgetMapper(this);
  21. mapper->setModel(model);
  22. mapper->setItemDelegate(new QSqlRelationalDelegate(this));
  23. mapper->addMapping(ui->comboBoxProvincia, 1);
  24. mapper->addMapping(ui->lineEditCentro, model->fieldIndex("nombre") );
  25. mapper->addMapping(ui->lineEditTipo, model->fieldIndex("tipo") );
  26. mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
  27.  
  28. connect(ui->table->selectionModel(), SIGNAL( currentChanged(QModelIndex,QModelIndex) ), mapper, SLOT( setCurrentModelIndex(QModelIndex) ));
  29.  
  30. ui->table->setCurrentIndex(model->index(0, 0));
To copy to clipboard, switch view to plain text mode 

I had to set a delegate in two places, the table view and the mapper.
These two lines:
Qt Code:
  1. ui->table->setItemDelegate( new QSqlRelationalDelegate( ui->table ));
  2.  
  3. mapper->setItemDelegate(new QSqlRelationalDelegate(this));
To copy to clipboard, switch view to plain text mode 

I hope this can help.