I am lazy, because it cost 10 ms for 100 rows to delete and insert. I found the answer in a brainstorming session last night.
My mistake was simple. I have not cleaned the data before I save new.
This is my code for others:
void TxTableModel
::parseXml(const QByteArray &xml
) {
TxSaxTableHandler handler(&m_Data, false);
inputSource.setData(xml);
reader.setContentHandler(&handler);
reader.setErrorHandler(&handler);
QModelIndexList selectedList = parent->selectionModel()->selectedRows();
beginResetModel();
m_Data.clearData();
reader.parse(inputSource);
endResetModel();
for( int i=0; i<selectedList.count(); i++) {
parent->selectRow(selectedList.at(i).row());
}
}
void TxTableModel::parseXml(const QByteArray &xml)
{
QXmlInputSource inputSource;
QXmlSimpleReader reader;
TxSaxTableHandler handler(&m_Data, false);
inputSource.setData(xml);
reader.setContentHandler(&handler);
reader.setErrorHandler(&handler);
QModelIndexList selectedList = parent->selectionModel()->selectedRows();
beginResetModel();
m_Data.clearData();
reader.parse(inputSource);
endResetModel();
for( int i=0; i<selectedList.count(); i++) {
parent->selectRow(selectedList.at(i).row());
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks