Seite 1 von 1

QStandardItemModel - bin am verzweifeln!

Verfasst: 15. Februar 2008 17:33
von Ozzy
Hi,

ich habe ein tierisches Problem mit einem QStandardItemModel:
und zwar habe ich eine Tabelle mit 6 Spalten. Zum Anfang des Programmes besitzt diese Tabelle nur eine Zeile:

Code: Alles auswählen

model = new QStandardItemModel( 1, 6 );
tableView = new QTableView;
layout_TableView->addWidget( tableView );
tableView->setModel( model );
tableView->setShowGrid( true );
Nun kann man in meinem Programm eine Datei laden. In dieser Datei steht am Anfang, wie viele Zeilen die Tabelle enthalten soll. Dafür werden erst einmal alle existierenden gelöscht, und dann neue hinzugefügt:

Code: Alles auswählen

model->removeRows( 0, model->rowCount(), QModelIndex() );
model->insertRows( 0, slider_NoOfRows->value(), QModelIndex() );
Anschließend wird die Datei weiter eingelesen, und die Zeilen mit den Daten gefüllt:

Code: Alles auswählen

for ( int i=0; i< slider_NoOfFlows->value(); i++ ) {
	model->setData( model->index( i, 0, QModelIndex()), flow.Application );
	[...]
}
Das funktioniert auch alles sehr schön. Anschließend kann man durch einen klick auf den Button, der sich in der letzen Spalte einer jeden Zeile befindet, die Einträge in den Zellen der Zeile ändern. Die Daten für den Dialog, den er dann öffnet, holt er sich aus einem Vektor, wo die Daten aus der Tabelle gepeichert sind (da nicht alle Daten auch in der Tabelle angezeigt werden sollen).

Das Problem tritt auf, wenn man den Dialog wieder verlässt, und die Daten in der Tabelle angezeigt werden sollen:

Code: Alles auswählen

model->setData( model->index( index.row(), 0, QModelIndex() ), flow.Application );
Hier stürzt er dann immer mit einer Fehlermeldung ab:
*** glibc detected *** malloc(): memory corruption (fast): 0x0820b67f ***

Das ganze passiert aber nicht, wenn man die Datei 2x hintereinander öffnet und einliest. Dann stürzt er nicht ab, und es gibt keine Probleme.
Wie gesagt, 2x die gleiche Datei öffnen und alles schön, nur einmal, und er stürzt ab.

Habt Ihr irgendeinen Anhaltspunkt, woran das liegen könnte???

MfG, und vielen Dank, Ozzy

Verfasst: 15. Februar 2008 17:36
von upsala
Frag doch einfach mal deinen freundlichen Debugger...

Verfasst: 15. Februar 2008 17:46
von Ozzy
Hi,

der erzählt mir:
Program received signal SIGABRT (Aborted)
Ich weiß auch ehrlich nicht so genau, wie man den Debugger bedient...
Kannst Du mir denn sagen, wonach ich da suchen muss?

MfG, Ozzy

Verfasst: 15. Februar 2008 17:49
von upsala
Man hat beim programmieren 2 Möglichkeiten:
Entweder man programmiert Fehlerfrei. Oder man lernt die Tools zu bedienen, die einem helfen Fehler zu finden.

Verfasst: 15. Februar 2008 18:03
von Ozzy
Da gebe ich Dir recht! Aber ich dachte, ich könnte hier wenigstens etwas Hilfe bekommen, wonach ich da suchen müsste...
Ich weiß ja, welche Zeile es ist, aber ich kann aus den Debug-Meldungen nicht sehen, woran das liegt...

Ich habe mal die GDB-Meldung rangehängt, vielleicht könnt Ihr ja doch etwas draus lesen...

MfG, Ozzy