PDA

View Full Version : Why is calling QSqlTablemodel::setData from const function is allowed?



fsh
13th June 2017, 23:14
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:



class myClass : public QObject
{
public:
myClass(QSqlDatabase *db);
~myClass();
private:
setRecord(int row, const QSqlRecord & record) const;
mySqlTableModel *myModel;
QSqlDatabase *dataBase;
}

class mySqlTableModel : public QSqlTableModel
{
Q_OBJECT
public:
explicit mySqlTableModel(QWidget *parent = Q_NULLPTR, QSqlDatabase db = QSqlDatabase());
~mySqlTableModel();
// various public and private members but no override of setRecord
}

myClass::myClass(QSqlDatabase *db) : QObject()
{
database = db;
myModel = new mySqlTableModel(Q_NULLPTR, *db);
}
myClass::~myClass()
{
delete myModel;
}
bool myClass::setRecord(int row, const QSqlRecord & record) const
{
for (int column = 0; column < recprd.count(); column++)
{
if (!myModel->setData(myModel->index(row, column), record.value(column))) // no compile error for calling setData?
{
return false;
}
}
return true;
}



Thanks!