QSqlTableModel - QTableView

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 12:23

QSqlTableModel - QTableView

Beitrag von JohnR »

Ich arbeite gerade ein Buch durch.....

in diesem wird in ein TableWidget via .setmodel() ein SqlTableModel eingefügt und dargestellt

wenn ich das ganze aber gemäß dem Bsp. teste.....

Code: Alles auswählen

QString table = "ip_log";
QSqlTableModel model;

model.setTable(table);
model.setHeaderData(0, Qt::Horizontal, tr("IP"));
model.setHeaderData(1, Qt::Horizontal, tr("Host"));
model.setHeaderData(2, Qt::Horizontal, tr("Date"));
model.setHeaderData(3, Qt::Horizontal, tr("Land"));
model.select();
ui->tableWidget_3->setModel(model);

bekomme ich

Code: Alles auswählen

mainwindow.cpp:785: Fehler:no matching function for call to 'QTableWidget::setModel(QSqlTableModel&)'
candidates are: virtual void QTableWidget::setModel(QAbstractItemModel*)
mir ist schon klar was die Build Meldung bedeutet.... aber warum wird es in dem Buch so aufgeführt und funktioniert nicht.....
und wie bekomme ich denn dann ein SqlTableModel in einen TableWidget angezeigt ??

mit freundlichen Grüßen
John
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QSqlTableModel - QTableView

Beitrag von brax »

Naja, so ganz klar scheint Dir die Fehlermeldung ja nicht zu sein. Das Problem ist einfach, dass setModel einen Pointer haben will und keine Referenz. Grundsätzlich wäre darum

Code: Alles auswählen

ui->tableWidget_3->setModel(&model);
richtig.
Das ist allerdings auch problematisch, da model ja eine lokale Variable ist und gelöscht wird, wenn sie den Scope verlässt. Du solltest model daher per new auf dem Heap erzeugen. Dann musst Du Dir natürlich Gedanken darüber machen, wer das Ding irgendwann wieder delete'd, sonst gibt's ein Speicherloch.

Warum das Buch es so schreibt kann ich Dir nicht sagen. Vielleicht sagt das ja was über die Qualität des Buches aus (oder es ist für ne alte Qt Version geschrieben, aber ich glaube setModel hat schon immer einen Pointer bekommen).
JohnR
Beiträge: 42
Registriert: 3. Dezember 2011 12:23

Re: QSqlTableModel - QTableView

Beitrag von JohnR »

Danke Dir !
Antworten