QStandardItemModel aktuallisieren???

Alles rund um die Programmierung mit Qt
Antworten
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

QStandardItemModel aktuallisieren???

Beitrag von Ozzy »

Hi,

so langsam habe ich den Verdacht, dass das QStandardItemModel nicht so will, wie ich, aber ich weiß nicht, warum. Das Problem äußert sich wie folgt:

Wenn ich mein Programm öffne, habe ich da eine TableView mit einer Zeile. Über Datei-->öffnen kann man Tabelleninhalte laden (in diesem Beispiel eine Tabelle mit 2 Zeilen). Im aufgerufenen Slot sieht es nun so aus:

Code: Alles auswählen

Vector.clear();
model->removeRows( 0, model->rowCount(), QModelIndex() );
ich lösche also am Anfang alle Zeilen in der meinem model. Danach füge ich so viele ein, wie ich brauche, und fülle sie hinter mit setData:

Code: Alles auswählen

model->insertRows( 0, slider_NoOfRows->value(), QModelIndex() );
Und schwupps: habe ich 4 Zeilen in der Tabelle, die oberen beiden enthalten die Daten aus der Datei, die 2 darunter sind Zeilen mit Default-Werten.
Und jetzt wird es ganz schräg: ich speichere zu jeder Zeile in der Tabelle die darin enthaltenen Daten in einem Vektor (da einige "unsichtbar" sein sollen). Der entprechende Eintrag wird dann aufgerufen, wenn man auf die entsprechende Zeile klickt (alles etwas schwierig zu beschreiben). Und da liegen meine Daten dann in der dritten und 4ten Zeile, statt in der ersten und zweiten...
Gehe ich dann noch einmal auf Datei->öffen, und lade die Datei erneut, ist alles genauso, wie es sein soll...

Habt Ihr eine Idee, woran das liegt? und vor allem, wie ich es "abschalten" kann???

Mfg, und vielen Dank schon einmal, Ozzy
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das ist die zweite Anfrage von dir heute, dich ich nicht verstehe (ich denke ich bin da nicht der einzige).

Ich denke auch in diesem Falle wäre ein bißchen Code sinnvoll...
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

dann probiere ich es noch einmal anders zu erklären:
ich habe eine TableView mit einem QStandardmodelitem. Beim Programmstart wird dieser nun eine Zeile hinzugefügt. Geht der Benutzer num im Menü auf "Öffnen", so werden alle Zeilen gelöscht:

Code: Alles auswählen

model->removeRows( 0, model->rowCount(), QModelIndex() );
Anschließend werden so viele neue Zeilen erstellt, wie in der Datei stehen:

Code: Alles auswählen

model->insertRows( 0, NoOfRows, QModelIndex() );
Wenn man dieses das erste mal ausführt, und es zwei Zeilen sein sollten, sind nach dem Öffnen auf einmal 4 Zeilen da. Führt man dieses nun noch einmal aus, sind es nur noch 2, also genauso, wie es sein sollte.
Mein Frage ist: warum funktioniert das noch nicht beim ersten mal?

MfG, Ozzy
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

hat echt keiner eine Idee? Mir ist das Problem auch noch an andere Stelle aufgefallen:

Wenn ich z.B. in einer Schleife 5 Zeilen hinzufügen möchte, und im Schleifenrumpf mir nach dem Erzeugen einer Zeile die Anzahl ausgeben lasse, so gibt er immer die gleiche, nämlich die erste Zahl aus.

Woran liegt das? Probiere das ja echt zu verstehen...

MfG, Ozzy
Antworten