Problem mit QTableView

Alles rund um die Programmierung mit Qt
Antworten
QuornJulio
Beiträge: 26
Registriert: 8. Dezember 2011 21:57

Problem mit QTableView

Beitrag von QuornJulio »

hallo,

ich habe eine kleine anwendung geschrieben, um mich mit dem QTableView zu beschäftigen.
leider stürzt die anwendung ab, wenn ich den scrollbalken der table ans ende ziehe.
kurz bevor die letzte zeile erscheint, stürzt die anwendung ab.

die anwendung ist recht simpel aufgebaut.

Code: Alles auswählen

QVector<Person> personen;
this->mTableModel = new TableModel(this->tableView, personen);
this->qHeaderView = new QHeaderView(Qt::Vertical, this->tableView);
this->vHeaderModel = new QStandardItemModel(this->qHeaderView);
this->vHeaderModel->insertRows(0, 50, QModelIndex());
this->qHeaderView->setModel(this->vHeaderModel);
this->tableView->setModel(this->mTableModel);
this->tableView->setVerticalHeader(this->qHeaderView);
es ist für nicht ersichtlich, wo der fehler liegt.
jedenfalls wollte ich eine tabelle mit "leeren" zeilen (keine nackte tabelle).

einige eckdaten:
windows 7
qt 5.4
mingw 4.9.1 (das von Qt mitgelieferte)

habt ihr eine idee, woran das liegen kann? für tipps wäre ich euch dankbar.

gruss
QuornJulio

[Nachtrag]
QtCreator gibt folgende fehlermeldung:
ASSERT failure in QBitArray::QBitArray: "Size must be greater than or equal to 0.", file tools\qbitarray.cpp, line 142
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Problem mit QTableView

Beitrag von Christian81 »

Zum einen gibt es einen Debugger mit dem man sich den Stacktrace anschauen kann und zum Anderen kann der gepostete Code dies nicht hervorrufen. Irgendwo wirst Du wohl mit QBitArray arbeiten und dort einen Fehler haben -> minimales, kompilierbares Beispiel ist nötig.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
QuornJulio
Beiträge: 26
Registriert: 8. Dezember 2011 21:57

Re: Problem mit QTableView

Beitrag von QuornJulio »

hallo,

ich habe das projekt gezipt. es steht als anhang zur verfügung. ("minimales, kompilierbares Beispiel ")
wie bereits erwähnt, ist es eine simple anwendung.

anwendung starten und den scrollbalken runterziehen bis ans ende.
bei mir erscheint ein dialog mit der fehlermeldung und die anwendung stürzt ab.

mit Qbitarray arbeite ich nicht direkt. das ist nur die ausgabe von qtcreator.

gruss
QuornJulio
Dateianhänge
TableViewExample.zip
QtCreator-Projekt
(5.66 KiB) 240-mal heruntergeladen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Problem mit QTableView

Beitrag von Christian81 »

Warum Du alles mit new erzeugst (QStringList, std::string, ...) und nicht einfach als Objekte benutzt verstehe ich nicht - so gibt es nur memleaks und / oder double free - Fehler. Das lädt direkt ein zum Crashen. Im dtor von Person z.B. löschst Du die Pointer auf name und surname nicht, im copy ctor weist Du einfach die Pointer zu anstatt die Werte. Die Wandlung von/nach QString/std::string ist auch überflüssig. Entweder das eine oder das andere aber ein Mischen in einer Klasse ... naja. Die Referenzen in den Set-Funktionen hast Du vergessen, dafür die gefährlichen Referenzen bei den Get-Funktionen drin.

Crashen tut es bei mir weder mit Qt 4.8 noch mit Qt 5.3 (beides Linux) und der memory-Checker zeigt auch keinen Fehler an (nur memleaks, aber das war ja zu erwarten). Der PushButton erzeugt zwar Einträge, die sind aber erst sichtbar sobald man rumscrollt da zwar der vector mit Daten gefüllt wird, aber weder das Model noch der View etwas darüber mitbekommen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
QuornJulio
Beiträge: 26
Registriert: 8. Dezember 2011 21:57

Re: Problem mit QTableView

Beitrag von QuornJulio »

hallo,

in windows ausgeführt, stürzt die anwendung ab, wenn man den scrollbalken bis zum ende zieht.
einige eckdaten:
windows 7
qt 5.4
mingw 4.9.1 (das von Qt mitgelieferte)
ich wäre jedenfalls froh über ein feedback von jemandem,
der in windows diesen Fehler auch hat und evtl. eine lösung.

gruss
Antworten