Monday 15 August 2011

c++ - QSqlTableModel primary key to row -



c++ - QSqlTableModel primary key to row -

i have qsqltablemodel , want insert , update records in special form in child-window. it's design selection not allow "inline editing" disabled on purpose.

when user selects entry (which can sorted , filtered through qsortfilterproxymodel , presented through qtableview), has 3 options (represented buttons): delete, edit , add.

my problem editing:

the parent-widget emits signal given record , executes model child-view the child-widget prepares form based on record, waits user input, validates it, creates record , sends parent-widget. the parent-widget takes record , puts database.

and right here problem! 1 can right record row quite easily, so:

void parent::on_button_edit_record_clicked() { // table sorted/filtered! row = proxymodel->maptosource(ui->tableview->currentindex()).row(); qsqlrecord r = model->record(row); emit editrecordsignal(record); child->exec(); } void parent::editrecord(const qsqlrecord &record) { model->setrecord(row, record); }

as can see, manually save row of record want update. don't think nice way handle this. seems rather hacky me.

what missed easy way translate primary key row , vice versa. like:

void parent::editrecord(const qsqlrecord &record) { model->setrecord(model->primarykeytorow(record->value("id")), record); }

is there way (without having extend qsqltablemodel), did miss or need save row manually accomplish want?

c++ qt qsqltablemodel

No comments:

Post a Comment