Mein Modell besteht aus zwei Listen (eine Pixmap-Liste und eine QPoint-Liste), diese Listen möchte nun in mein TableView anzeigen. Entsprechend hat mein View 2 Spalten und n Zeilen (erste Spalte für die Pixmaps, 2-te für die QPoints).
So werden die Daten in mein Modell eingespeist und gleichzeitig die Spalten bzw. Reihen für den View:
Code: Alles auswählen
void worksheetModel::addModule(QPixmap pixmap, QPoint position)
{
int row=rowCount();
int column=columnCount();
if (row!=0) // View nicht-leer, erstelle noch eine Reihe
{
beginInsertRows(QModelIndex(), row, row);
pixmapList.insert(row, pixmap);
positionList.insert(positionList.size(), position);
endInsertRows();
}
else //View ist leer, erstelle 2 Spalten und 1 Reihe
{
beginInsertColumns(QModelIndex(), column, column+1);
beginInsertRows(QModelIndex(), row, row);
pixmapList.insert(row, pixmap);
positionList.insert(positionList.size(), position);
endInsertRows();
endInsertColumns();
}
}
Mein Problem: solange mein View nur ein Row und zwei Spalten hat, wird nur ein Item (QModelIndex = QModelIndex(0,0,0x0,worksheetModel(0x8128268) )) aktualisiert, obwohl das View 2 Elemente hat (1Row x 2Column).
Füge ich noch ein Row ein (2Row x 2Column = 4 Items) wird tatsächlich alles aktualisiert QModelIndex = 0,0; =0,1; =1,0; =1,1.
Also, wieso wird mein View nicht richtig aktualisiert wenn ich nur 2 Elemente habe...? ich hoffe das Ganze einigermassen verständlich erklärt zu haben.