QStandardItemModel - bin am verzweifeln!

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

QStandardItemModel - bin am verzweifeln!

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Frag doch einfach mal deinen freundlichen Debugger...
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag 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
Dateianhänge
gdb.jpg
gdb.jpg (61.96 KiB) 2771 mal betrachtet
Antworten