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:
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.
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.
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.
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.