[gelöst]variablen Text in ein QTableWidgetItem schreiben

Alles rund um die Programmierung mit Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst]variablen Text in ein QTableWidgetItem schreiben

Beitrag von qtNiko »

hallo,

ich hänge an einem einfach erscheinenden Problem:
Ich möchte die Felder eines QTableWidget füllen.
Ein Pointer "table" auf die Tabelle existiert.So konnte ich z.B. die Headerlabels beschreiben mit table->setVerticalHeaderLabels(paramNames);
Jetzt sollen die Felder gefüllt werden:

Code: Alles auswählen

for (int i=0; i<paramNames.count(); i++) {
		table->item(i,0)->setText(QString::number(i));
	}
Sobald das erste mal table->item... durchlaufen werden soll, stürzt das Programm ab.
Die Art und Weise des Füllens habe ich aus meinem Qt4-Buch abgeschrieben.
Was stimmt denn da nicht?
Zuletzt geändert von qtNiko am 15. November 2007 08:41, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Mit einem Debugger hättest Du wahrscheinlich festgestellt das table->item(i,0) == NULL.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

hallo,

das ist tatsächlich so, der Pointer item() ist NULL.
Ich hatte mit dem Qt-Designer einen Dialog und darin ein QTableWidget erstellt. Bei letzterem hatte ich im Designer bereits rowCount=10 und columnCount=1 angegeben .
Nun ging ich davon aus, dass der Designer nicht nur die Grafik, sondern mir auch bereits die items erstellt , und ich sie nur noch verwenden müsse. Das könnte er doch ohne weiteres. Er hat ja alle Infos, nun ja ...

Heiß das, dass ich erst jedes einzelne item im Programm erstellen muss (mit addRow() vermutlich), oder kann ich, wie mir vor kurzem hier im Forum in anderem Zusammenhang geraten wurde, mit findChild arbeiten?

Die Frage ist schlicht, erstellt der Designer bereits items, die ich nur noch "finden" muss, oder muss ich sie alle selbst erstellen?
Mein Qt-Buch lässt sich hierüber überhaupt nicht aus. Der Designer kommt darin viel zu kurz vor, gerade als ob sich ohnehin niemand dafür interessieren würde.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

qtNiko hat geschrieben:Das könnte er doch ohne weiteres. Er hat ja alle Infos, nun ja ...
Hat er nicht. Jede Tabellenzelle ist ein Item und Du kannst für jedes Item festlegen, ob es editierbar, selektierbar etc. ist.
qtNiko hat geschrieben:Heiß das, dass ich erst jedes einzelne item im Programm erstellen muss (mit addRow() vermutlich),
Die Anzahl der Reihen und Spalten hast Du ja bereits vorgegeben. Items erstellst Du etwa so:

Code: Alles auswählen

tableWidget->setItem( x, y, new QTableWidgetItem( inhalt ) );
qtNiko hat geschrieben:Der Designer kommt darin viel zu kurz vor, gerade als ob sich ohnehin niemand dafür interessieren würde.
Der Designer würde dir wahrscheinlich die entsprechenden Items erstellen, wenn Du sie im Designer bereits mit Inhalten füllen kannst. Nur meistens weiß man eben noch nicht was in die einzelnen Zellen kommt. Deshalb nutze ich den Designer wirklich nur für die Oberfläche, alle Inhalte werden im Code erstellt.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

hallo,

vielen Dank noch mal für die Infos.

Jetzt geht's also ran ans Programmieren.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Antworten