Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QSqlTableModel performance problem
Qt 6.12 LTS is out! See what's new in the release blog

QSqlTableModel performance problem

Scheduled Pinned Locked Moved General and Desktop
qwidgetqsqltablemodelqtableviewperformance
3 Posts 3 Posters 2.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    looping
    wrote on last edited by looping
    #1

    Hi,
    I use a QSqlTableModel to log all application activity: my QTableView is connected with a QSqlTableModel from MySQL table
    I have a performance problem with it when I Have more than 3000 logs line
    this is how I do:

    QSqlDatabase* pdatabase = CDatabase::GetInstance();
    m_model = new QSqlTableModel(NULL, *pdatabase);
    m_model->setTable("LogData");
    m_model->setEditStrategy(QSqlTableModel::OnRowChange);
    m_model->select();
    m_model->setHeaderData(0, Qt::Horizontal, "ID");
    m_model->setHeaderData(1, Qt::Horizontal, "Type");
    m_model->setHeaderData(2, Qt::Horizontal, "Date");
    m_model->setHeaderData(3, Qt::Horizontal, "Time");
    m_model->setHeaderData(4, Qt::Horizontal, "Text");
    

    then I connect the model to the QTableView

    ui->tableViewLog->setModel(logModel);
    ui->tableViewLog->sortByColumn(0, Qt::DescendingOrder);
    

    And the function that add a log line:
    void ClogManager::addLogLine(QString logLine, QString logType)
    {

    m_model->insertRow(m_model->rowCount());
    QModelIndex num = m_model->index(m_model->rowCount()-1, LOGMODEL_NUM);
    QModelIndex type = m_model->index(m_model->rowCount()-1, LOGMODEL_TYPE);
    QModelIndex date = m_model->index(m_model->rowCount()-1, LOGMODEL_DATE);
    QModelIndex time = m_model->index(m_model->rowCount()-1, LOGMODEL_TIME);
    QModelIndex text = m_model->index(m_model->rowCount()-1, LOGMODEL_TEXT);
    
    m_model->setData(num, m_model->rowCount());
    m_model->setData(type, logType);
    m_model->setData(date, QDateTime::currentDateTime().toString("yy/MM/dd"));
    m_model->setData(time, QTime::currentTime().toString("HH:mm"));
    m_model->setData(text, logLine);
    m_model->submitAll();
    m_model->select();
    //emit m_model->dataChanged(num, text);
    //m_model->selectRow(m_model->rowCount()-1);
    //m_model->submitAll();
    //m_model->selectRow(m_model->rowCount());
    

    }

    m_model->select() takes more and more time, how can I refresh in my QTableView only the line added in my log
    I tryed m_model->selectRow but it dont works, it only add a line with a "!"
    do you have any idea?
    thank you

    1 Reply Last reply
    0
    • Q Offline
      Q Offline
      QtTester
      wrote on last edited by
      #2

      Re: QSqlTableModel performance problem

      i will use qsqlquery, tablemodel->setData is unacceptable, query.bindData is much faster than model.setData()

      Christian EhrlicherC 1 Reply Last reply
      0
      • Q QtTester

        Re: QSqlTableModel performance problem

        i will use qsqlquery, tablemodel->setData is unacceptable, query.bindData is much faster than model.setData()

        Christian EhrlicherC Online
        Christian EhrlicherC Online
        Christian Ehrlicher
        Lifetime Qt Champion
        wrote on last edited by
        #3

        @QtTester said in QSqlTableModel performance problem:

        tablemodel->setData is unacceptable, query.bindData is much faster than model.setData()

        But they're two completely different things...

        Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
        Visit the Qt Academy at https://academy.qt.io/catalog

        1 Reply Last reply
        1

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt
        • Unsolved