[Qt-interest] QDataWidgetMapper, QSqlTableModel and AutoSubmit

Wilhelm wilhelm.meier at fh-kl.de
Mon Oct 11 18:07:35 CEST 2010


Hi,

I found a strange behaviuor with QDataWidgetMapper:

The first time I edit a field value with the widget (QLineEdit) the
column is mapped to, the model gets updated (e.g. the QTableView gets
this new value). When I modifiy the field a second time, nothing happens!

And further: if I edit the field value in the QTableView, the mapped
widget gets not updated.

Any hints?
-

Widget::Widget(QWidget *parent)
    : QWidget(parent) {

    QVBoxLayout* l = new QVBoxLayout(this);

    QTableView* tv = new QTableView(this);
    l->addWidget(tv);

    QSqlTableModel* tm = new QSqlTableModel(this);
    tm->setEditStrategy(QSqlTableModel::OnFieldChange);

    tm->setTable("vorgang");
    tm->setHeaderData(0, Qt::Horizontal, tr("id"));
    tm->setHeaderData(1, Qt::Horizontal, tr("Start"));
    tm->setHeaderData(2, Qt::Horizontal, tr("End"));

    if (!tm->select()) {
        qDebug() << "select nok";
    }
    tv->setModel(tm);
    tv->resizeColumnsToContents();
    tv->setItemDelegateForColumn(1, new Delegate(this));

    l->addWidget(new QLabel("Vorgang"));
    QLineEdit* le = new QLineEdit(this);
    l->addWidget(le);

    QDataWidgetMapper* mapper = new QDataWidgetMapper(this);
    mapper->setModel(tm);
    mapper->addMapping(le, tm->fieldIndex("beschreibung"));
    mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
    mapper->toFirst();
}


-- 
Wilhelm





More information about the Qt-interest-old mailing list