Model View Tutorial Part3/de: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
[http://qt.io/groups/qt_german/wiki/Model-View-Tutorial-Teil2-Delegate-und-View ← Teil 2: Delegate und View]<br />[http://qt.io/groups/qt_german/wiki/Model_View_Tutorial ↑Übersicht Model/View Tutorial:CD Verwaltung↑]<br />[http://qt.io/groups/qt_german/wiki/Model-View-Tutorial-Teil4 Teil 4: Copy / Paste und Drag and Drop →]


=Hinzufügen / Löschen von Zeilen / Spalten=
Wenn Zeilen oder Spalten zu einem Model hinzugefügt werden, muss bevore die Daten verändert werden die Methode '''beginInsertRows/beginInsertColumns''' und nach Änderung der Daten '''endInsertRows/endInsertColumns''' aufgerufen werden. Synchron dazu muss beim Löschen von Zeilen / Spalten '''beginRemoveRows/beginRemoveColumns''' und '''endRemoveRos/endRemoveColumns''' aufgerufen werden.
In unserem Datenmodell gibt es dafür 4 Methoden:
* void addCd();
* void removeCd(const QModelIndex&amp; index);
* bool addColumn(const QString&amp; rszColumnName);
* void removeColumn(int nColumn);
ichtig ist, das das Ändern der Daten von beginXXX endXXX umklammert ist, damit die Views in diesem Zeitraum issen, dass sie nicht auf diese Daten zugreifen dürfen.
==beginInsertXXX==
Egal ob Spalten oder Zeilen eingefügt werden sollen, die Logik ist dieselbe:
Die Methoden syntax ist: beginInsertXXX(parent, start, end)
* parent spezifiziert das Eltern element, bei einer Tabelle ist das immer ein ungültiger Model Index
* start ist der erste neue Index, im Beispiel unten 4
* end ist der letzte neue Index, in unserem Beispiel 6
Hier ein Beispiel aus der Qt-Dokumentation:<br />[[Image:modelview-begin-insert-columns.png|Qt docu]]
Nach erfolgreichem Einfügen in die unterlagerten Daten muss noch entsprechend endInsertXXX aufgerufen werden.
==beginRemoveXXX==
Egal ob Spalten oder Zeilen gelöscht werden sollen, die Logik ist dieselbe:
Die Methoden syntax ist: beginRemoveXXX(parent, start, end)
* parent spezifiziert das Eltern element, bei einer Tabelle ist das immer ein ungültiger Model Index
* start ist der erste zu löschende Index, im Beispiel unten 4
* end ist der letzte zu löschende Index, in unserem Beispiel 6
Hier ein Beispiel aus der Qt-Dokumentation:<br />[[Image:modelview-begin-remove-columns.png|Qt docu]]
Nach erfolgreichem Löschen in den unterlagerten Daten muss noch entsprechend endRemoveXXX aufgerufen werden.
Im folgenden die Implementierungen:
==addCd==
==removeCd==
==addColumn==
==removeColumn==

Revision as of 13:48, 24 February 2015