#include #include #include #include #include #include #include #include #include #include class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0) : QMainWindow(parent) { QWidget *w = new QWidget(this); setCentralWidget(w); QVBoxLayout *l = new QVBoxLayout(w); QLineEdit *edit1 = new QLineEdit(w); QLineEdit *edit2 = new QLineEdit(w); QPushButton *button = new QPushButton(w); l->addWidget(edit1); l->addWidget(edit2); l->addWidget(button); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("sample.db"); if (!db.open()) { Q_ASSERT(0); } QSqlQuery q(db); if (q.exec("CREATE TABLE fields (field1 VARCHAR(128), field2 VARCHAR(128));")) q.exec("INSERT INTO fields (field1, field2) VALUES ('aaaaa', 'bbbbb')"); QSqlTableModel *model = new QSqlTableModel(this); model->setTable("fields"); model->select(); model->setEditStrategy(QSqlTableModel::OnFieldChange); QDataWidgetMapper *mapper = new QDataWidgetMapper(this); mapper->setModel(model); mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit); mapper->setItemDelegate(new QItemDelegate(this)); mapper->addMapping(edit1, model->fieldIndex("field1")); mapper->addMapping(edit2, model->fieldIndex("field2")); mapper->toFirst(); connect(button, SIGNAL(clicked()), mapper, SLOT(submit())); } }; #include "main.moc" int main(int argc, char **argv) { QApplication app(argc, argv); MainWindow mw; mw.show(); return app.exec(); }