c++ - QDataWidgetMapper only updates first index to QSqlRelationalTableModel -
i have problem regarding parts of qt framework. using qt 5.0.2 , developing on windows @ moment.
in application have tableview set qsqlrelationaltablemodel. next have text field , 3 combo boxes connected relational table model. widgets mapped model using qdatawidgetmapper follows:
mapper = new qdatawidgetmapper(this); mapper->setmodel(model); mapper->setitemdelegate(new qsqlrelationaldelegate(this)); mapper->setsubmitpolicy(qdatawidgetmapper::manualsubmit); mapper->addmapping(ui->coursecombobox, model->fieldindex("course_shortcode")); mapper->addmapping(ui->subjectcombobox, model->fieldindex("subject_name")); mapper->addmapping(ui->lecturercombobox, model->fieldindex("lecturer_name")); mapper->addmapping(ui->themestextedit, model->fieldindex("event_themes"));
as see submitpolicy set manual submit. under widgets have buttonbox containing save , reset button.
when save button gets clicked, this:
qdebug() << this->mapper->submit(); qdebug() << model->lasterror().text();
this create following output:
true " "
which means submit successful , there no error reported.
nevertheless first field gets updated in model. other widgets reset value value original model (because model emits datachanged, mapper connected to, guess).
i tried removing 1 or 2 of mappings , onl field whichs mapping gets added first updated.
if change submitpolicy autosubmit mapper work intended. need have reset , apply buttons , not have data submitted on change.
this seems occurrence of qtbug 1086 bug got fixed , cant reproduce problem bug report code there either.
i hope can me.
i edited answer because misunderstood documentation and, after receiving explanation, got correct way obtain desired result. should modify model edit strategy using qsqltablemodel::seteditstrategy() , change qsqltablemodel::onrowchange. needed in order avoid modifications sent underlying db after every single column modification, produce update of mapped widgets contents after first column change.
Comments
Post a Comment