My colleague found a next problem with QSqlTableModel:
Qt Code:
  1. #define VARIANT_1
  2. class SomeClass : public QWidget
  3. {
  4. Q_OBJECT
  5.  
  6. public:
  7.  
  8. SomeClass(QWidget *parent = 0, Qt::WFlags flags = 0)
  9. {
  10. ui.setupUi(this);
  11.  
  12. db = QSqlDatabase::addDatabase("QSQLITE");
  13. db.setDatabaseName(":memory:");
  14. if (!db.open()) {
  15. return;
  16. }
  17.  
  18. QSqlQuery query;
  19. query.exec("create table person (id int primary key, "
  20. "firstname varchar(20), lastname varchar(20))");
  21. query.exec("insert into person values(101, 'Danny', 'Young')");
  22. query.exec("insert into person values(102, 'Christine', 'Holand')");
  23.  
  24. #if defined( VARIANT_1 )
  25. p_model = new QSqlTableModel( );
  26. QSqlTableModel & model = *p_model;
  27. #endif
  28. model.setTable("person");
  29. model.setEditStrategy(QSqlTableModel::OnManualSubmit);
  30. model.select();
  31.  
  32. model.setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
  33. model.setHeaderData(1, Qt::Horizontal, QObject::tr("First name"));
  34. model.setHeaderData(2, Qt::Horizontal, QObject::tr("Last name"));
  35.  
  36. ui.tableView->setModel(&model);
  37.  
  38. }
  39.  
  40. private:
  41. Ui::qhlbClass ui;
  42. #if defined( VARIANT_1 )
  43. QSqlTableModel * p_model;
  44. #else
  45. #endif
  46. };
To copy to clipboard, switch view to plain text mode 

if VARIANT_1 is defined tableView shows a right table, else - not.
I.e. if QSqlTableModel comes as an object table doesn't shows it's data...
If QSqlTableModel comes as a pointer it's works fine...
Can you comment this ?