Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QSqlTableModel performance problem
Qt 6.11 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 Offline
        Christian EhrlicherC Offline
        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 Extensions
        • Unsolved