I am calling QSqlTablemodel::setData from inside a const function and the compiler is not giving me an error. This doesn't seem right. Anybody know why this is allowed?

Example:

Qt Code:
  1. class myClass : public QObject
  2. {
  3. public:
  4. myClass(QSqlDatabase *db);
  5. ~myClass();
  6. private:
  7. setRecord(int row, const QSqlRecord & record) const;
  8. mySqlTableModel *myModel;
  9. QSqlDatabase *dataBase;
  10. }
  11.  
  12. class mySqlTableModel : public QSqlTableModel
  13. {
  14. Q_OBJECT
  15. public:
  16. explicit mySqlTableModel(QWidget *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase());
  17. ~mySqlTableModel();
  18. // various public and private members but no override of setRecord
  19. }
  20.  
  21. myClass::myClass(QSqlDatabase *db) : QObject()
  22. {
  23. database = db;
  24. myModel = new mySqlTableModel(Q_NULLPTR, *db);
  25. }
  26. myClass::~myClass()
  27. {
  28. delete myModel;
  29. }
  30. bool myClass::setRecord(int row, const QSqlRecord & record) const
  31. {
  32. for (int column = 0; column < recprd.count(); column++)
  33. {
  34. if (!myModel->setData(myModel->index(row, column), record.value(column))) // no compile error for calling setData?
  35. {
  36. return false;
  37. }
  38. }
  39. return true;
  40. }
To copy to clipboard, switch view to plain text mode 


Thanks!