[Qt-interest] Problem with QAbstractTableModel and adding data

David Heremans david.heremans at intersoft-electronics.com
Thu Aug 5 14:32:20 CEST 2010


Hello,

I subclassed QAbstractTableModel, as it needs to hold a number of
messages received that I want nicely displayed. The number of messages
in this model should increase up until a maximum and from then on the
older messages are dropped, this all works fine except for one tiny
detail:

I have trouble displaying new data :-\

I created a form containing a QTableView and when instantiated it
creates a display containing as much rows as the datamodel holds at
that time, but when I add new extra data the tableview doesn't create
extra rows for the new data.

This is my update code

void MessagesTableModel::addData(int code, int level, QString message)
{
    t_msgStruct remember;
    remember.code=code;
    remember.level=level;
    remember.content=message;

    QModelIndex topLeft = createIndex(0,0);
    int inlist=m_messages.size();

    if ( inlist < m_maxNrMessages){
        beginInsertRows(topLeft,inlist+1,inlist+1);
    }
    m_messages.push_front(remember);
    if ( m_messages.size() <= m_maxNrMessages){
        endInsertRows();
    }

    while (m_messages.size() > m_maxNrMessages){
        m_messages.pop_back();
    };

    QModelIndex botRight = createIndex(m_messages.size(),3);
    emit dataChanged(topLeft,botRight);
}


What am I missing here ?

Rgds,

David H




More information about the Qt-interest-old mailing list