Hello!
Hi have this basic ui to manage data is a MySQL table:
dialog.png
The model/view approach works fine.
I'm trying now a "form" approach, using QDataWidgetMapper with the same model.
The model:
model->setTable("hobby");
model->setHeaderData(0, Qt::Horizontal, "ID");
model->setHeaderData(1, Qt::Horizontal, "Nome do passatempo");
model->select();
return model;
QSqlTableModel *model = new QSqlTableModel(this, QSqlDatabase::database("connection1"));
model->setTable("hobby");
model->setEditStrategy(QSqlTableModel::OnFieldChange);
model->setHeaderData(0, Qt::Horizontal, "ID");
model->setHeaderData(1, Qt::Horizontal, "Nome do passatempo");
model->select();
return model;
To copy to clipboard, switch view to plain text mode
The QDataWidgetMapper:
void hobbyDialog::setupWidgetMapper()
{
mapper->setModel(model);
mapper->addMapping(ui->spinBoxIdHobby, 0);
mapper->addMapping(ui->lineEditNomeHobby, 1);
mapper->toFirst();
...
}
void hobbyDialog::setupWidgetMapper()
{
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->addMapping(ui->spinBoxIdHobby, 0);
mapper->addMapping(ui->lineEditNomeHobby, 1);
mapper->toFirst();
...
}
To copy to clipboard, switch view to plain text mode
Using the tableView, in order no add new record i used:
void hobbyDialog::on_inserirUmRegisto_clicked()
{
// Inserir um registo
view->setFocus();
int row = model->rowCount();
model->insertRows(row,1);
QModelIndex index
= model
->index
(row, model
->fieldIndex
("idHobby"));
view->setCurrentIndex(index);
view->edit(index);
}
void hobbyDialog::on_inserirUmRegisto_clicked()
{
// Inserir um registo
view->setFocus();
int row = model->rowCount();
model->insertRows(row,1);
QModelIndex index = model->index(row, model->fieldIndex("idHobby"));
view->setCurrentIndex(index);
view->edit(index);
}
To copy to clipboard, switch view to plain text mode
Now, using the form/QDataWidgetMapper, how do i manage the add new record?
Bookmarks