[gelöst] QWidgetTableWidget füllen

Alles rund um die Programmierung mit Qt
Antworten
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

[gelöst] QWidgetTableWidget füllen

Beitrag von RogerWilco »

Guten Morgen,

gestern lief es noch... heute habe ich damit meine Probleme (nach einigem experimentieren ) :roll: :oops:
"Ausgabe der Anwendung: Das Programm ist abgestürzt".

Die Doku bezieht sich leider irgendwie in den Beispielen immer darauf, wenn man das Widget komplett selbst schreibt, ich habe die Tabelle aber mit dem Creator eingefügt.
(open csv öffnet einen Datensatz, den ich später in die Tabelle schreiben will)

Muss ich vorher jede Zelle durchlaufen und definieren?

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
openCsv(Spektrum);

ui->tableWidget->setRowCount(5000);
ui->tableWidget->setColumnCount(5);

ui->tableWidget->item(1,1)->setText("test!"); //läuft, wenn diese Zeile auskommentiert

}
Zuletzt geändert von RogerWilco am 4. Dezember 2009 13:16, insgesamt 1-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Ich vermute mal das

Code: Alles auswählen

ui->tableWidget->item(1,1) 
NULL zurückgibt.

Versuch es mal mit

Code: Alles auswählen

     QTableWidgetItem *newItem = new QTableWidgetItem("test!");
     ui->tableWidget->setItem(1, 1, newItem);
Steht auch in der Doku von QTableWidget!
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

Beitrag von RogerWilco »

Du bist ja schneller als die Feuerwehr und es funktioniert sogar! vielen Dank!

Wenn man das jetzt aber für jede Zelle machen muß, ist das aber schon irgendwie unhandlich.... (trotz Schleifen)
Später soll nämlich einfach ein QVector die Spalte füllen...
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Eine andere Möglichkeit wäre ein QTableView mit einem eigenen Modell
(Abgeleitet von QAbstractTableModel).
Dann wärst du auch flexibler. Ich mache das immer so.
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

Beitrag von RogerWilco »

Dazu stehen ja ein Paar Zeilen im Qt-Buch.
Aber für mich als Anfänger ist das (vorerst) noch zu hoch.
Aber vielen Dank!
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wenn man das jetzt aber für jede Zelle machen muß, ist das aber schon irgendwie unhandlich
aehm huestel , naja wenigstens kannste s mit schleifen machen ^^
um die schleifen bzw, befuellen jeder Zeile / spalte mit hilfe von schleifen kommst ned drumherum, es sei denn fuer deinen zweck gibts scho was fertiges.

Fertige dinge waeren:
Directorymodell, QSQLTableModel, QStringListModel z.b.
wo dir das iterieren (Schleifendurchlauf über alle elemente in einem container) abgenommen werden, weil die Models halt ihre Container genau kennen.

ciao ...
RogerWilco
Beiträge: 61
Registriert: 26. November 2009 00:08
Kontaktdaten:

Beitrag von RogerWilco »

Ja, mit einer Listview ging es ganz einfach.
Das Problem ist ja nicht die Schleife ansich...
Dank append ist der QVector ja so schön dynamisch, falls er mal größer oder kleiner ist...
Man könnte natürlich für jede Tabellenspalte die entsprechende Vektorlänge mitübergeben und entsprechend durchlaufen....
Also je mehr ich darüber nachdenke...
Kann doch eigentlich nicht so schwer sein.

Vielen Dank an alle.
Antworten