in QSqlQueryModel Spalte einfügen.

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Chri
Beiträge: 71
Registriert: 23. Juni 2017 12:32

in QSqlQueryModel Spalte einfügen.

Beitrag von Chri » 11. Juli 2018 12:45

Hi
Habe eine funktionierende Abfrage aus einer Datenbank

Code: Alles auswählen

QSqlQueryModel * qmod = new QSqlQueryModel();
qmod->setQuery( ....
ui->treeView_BTsch->setModel(qmod);
Nun möchte ich, dass in einer zusätzlichen Spalte weitere Werte angezeigt werden (sagn wir mal: die Zahl 22), die eingefügte Spalte soll nichts mit der Datenbank zu tun haben:

Code: Alles auswählen

qmod->insertColumn(5);  //Es wird tasächlich eine Spalte eingefügt
for (int i = 0; i<qmod->rowCount(); i++)
{
    qmod->setData(qmod->index(i,6),22);  //Das funktioniert nicht, die Spalte bleibt leer.
    qDebug()<<qmod->data(qmod->index(i,6)).toDouble();  // liefert 0
}
Wie kann ich Daten in die eingefügte Spalte schreiben bzw. geht das überhaupt?


LG
Chri

hilefoks
Beiträge: 134
Registriert: 13. März 2008 17:09

Re: in QSqlQueryModel Spalte einfügen.

Beitrag von hilefoks » 11. Juli 2018 18:30

QSqlQueryModel ist ein read-only Model - insertColumn ist für QSqlQueryModel entsprechend nicht implementiert und gibt immer false zurück. Die Methode ist für abgeleitete Klassen gedacht, die diese Funktionalität dann ggf. implementieren. Abgesehen davon ist sie auch dafür gedacht diese Spalte wirklich der Datenbank hinzuzufügen.

Was du suchst ist eine Proxy-Model (QAbstractProxyModel oder QSortFilterProxyModel).

MfG
Hilefoks

Antworten