Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QTableView don’t refresh with QSqlTableModel



  • I’m using QSqlTableModel with QTableView and I have a problem when try insert datas. QTableView don’t refresh. I test insertRow() with setData(), setRecord(), insertRecord(), submitAll(), and nothing.
    I try with QSqlQuery::exec and return true, but de rowCount() return 0.
    I have 4 tables in my DB:

    @QSqlDtabase db;
    QSqlTableModel model(0, db);
    QTableView table;
    table.setModel(&model);
    model.setTableName("student");
    model.setEditStrategy(QSqlTableModel::OnManualSubmit)ñ
    model.select();
    model.insertRecord(dataStudentRecord)
    model.submitAll();
    @

    and nothing....somebody Help me. Thanks



  • You should try to provide code that will compile and demonstrates the problem. There's no QSqlTablemodel::insertRecord() that accepts a single value for example.

    Here are some questions that might help you isolate the problem:

    • Is the database connection is successfully opened? Did you check?
    • Does a table called "student" exist in the database?
    • Is dataStudentRecord a QSqlRecord that matches this model?
    • QSqlTableModel::insertRow(), QSqlTableModel::setData(), QSqlTableModel::setRecord() and QSqlTableModel::submitAll() all return a value, did you check it?
    • Are you sure your record is actually insertable and inserted? Does it violate database check or referential integrity constraints?
    • When it fails, did you check the result of QSqlTableModel::lastError()?

    Updating the table other than through the model, i.e. by executing a QSqlQuery separately, will not update the view or model unless you reset the model.


Log in to reply