|
|
| 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& index);
| |
| * bool addColumn(const QString& 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==
| |