Doesn't seem normal to me:
Qt Code:
  1. #include <QtGui>
  2. #include <QtSql>
  3. #include <QDebug>
  4. #include "connection.h"
  5.  
  6. class MyTableView: public QTableView
  7. {
  8. Q_OBJECT
  9. public:
  10. MyTableView(): QTableView() {}
  11. public slots:
  12. void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
  13. { qDebug() << "dataChanged" << topLeft << bottomRight; }
  14. };
  15.  
  16. int main(int argc, char *argv[])
  17. {
  18. QApplication app(argc, argv);
  19.  
  20. if (!createConnection())
  21. return 1;
  22.  
  23. model.setTable("person");
  24. model.setEditStrategy(QSqlTableModel::OnFieldChange);
  25. model.select();
  26. MyTableView t1;
  27. t1.setWindowTitle("View 1");
  28. t1.setModel(&model);
  29. QObject::connect(&model,
  30. SIGNAL(dataChanged(const QModelIndex&,const QModelIndex&)) ,
  31. &t1,
  32. SLOT(dataChanged(const QModelIndex&,const QModelIndex&)));
  33. MyTableView t2;
  34. t2.setWindowTitle("View 2");
  35. t2.setModel(&model);
  36.  
  37. t1.show();
  38. t2.show();
  39. return app.exec();
  40. }
  41. #include "main.moc"
To copy to clipboard, switch view to plain text mode 
Changes in View 2 correctly update View 1 using dataChanged()