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