QTableView Daten vor der Anzeige anpassen. Wie?

Alles rund um die Programmierung mit Qt
Antworten
ekom
Beiträge: 5
Registriert: 21. August 2009 14:12

QTableView Daten vor der Anzeige anpassen. Wie?

Beitrag von ekom »

Hallo an alle!

Ich habe folgendes Problem. Muss die Date aus der SQLite-Tabelle nur für die Anzeige in QTabelView anpassen. In dem Fall geht es z.b. um das Datum.

Wie kann man das am besten machen?
Kann ich bei QSqlTableModel auch eigene SQL-Abfrage machen, wo ich das Datum in der Abfrage schon in den richtigen Format bringe?

Code: Alles auswählen

QSqlTableModel *model = new QSqlTableModel(this);
    model->setEditStrategy(QSqlTableModel::OnRowChange);
    
    model->setTable("gruppen");
    model->select();

    int index=model->record().indexOf("erstellt");
    QDateTime d=model->record(0).value(index).toDateTime();
    QString date=d.toString("dd.MM.yyyy hh:mm");


    model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
    model->setHeaderData(1, Qt::Horizontal, QObject::tr("Bezeichnung"));
    model->setHeaderData(2, Qt::Horizontal, QObject::tr("Beschreibung"));
    model->setHeaderData(3, Qt::Horizontal, QObject::tr("Parent ID"));
    model->setHeaderData(4, Qt::Horizontal, QObject::tr("Position"));
    model->setHeaderData(5, Qt::Horizontal, QObject::tr("Erstellt am"));
    model->setHeaderData(6, Qt::Horizontal, QObject::tr("Erstellt von"));
    model->setHeaderData(7, Qt::Horizontal, QObject::tr("Geaendert am"));
    model->setHeaderData(8, Qt::Horizontal, QObject::tr("Geaendert von"));
    model->setHeaderData(9, Qt::Horizontal, QObject::tr("Trash"));
    model->setHeaderData(10, Qt::Horizontal, QObject::tr("Tab-Mitarbeiter"));
    model->setHeaderData(11, Qt::Horizontal, QObject::tr("Sync ID"));

    ui->tableGruppen->setModel(model);


    ui->tableGruppen->resizeColumnsToContents();
    ui->tableGruppen->setColumnHidden(3,true);
    ui->tableGruppen->setColumnHidden(4,true);
    ui->tableGruppen->setColumnHidden(9,true);
    ui->tableGruppen->setColumnHidden(10,true);
    ui->tableGruppen->setColumnHidden(11,true);
    ui->tableGruppen->horizontalHeader()->setResizeMode(2, QHeaderView::Stretch);
    ui->tableGruppen->verticalHeader()->setHidden(true);
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich würde sagen das ist ein Fall für QAbstractItemDelegate
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Beim SQLTableModel IMHO nicht ohne tricks, aber das QSQLQueryModel waer dann vielleicht das richtigere .... wenn du die formatierung per SQL-STatemant umsetzen willst.

Ansonsten kannst du die anzeigedaten, wie christian schon andeutet, ueber das deligate modifizieren. Was aber kleinwenig komplexer, aber auch eleganter und wiederverwendbarer ist.

Ciao ....
ekom
Beiträge: 5
Registriert: 21. August 2009 14:12

Beitrag von ekom »

Vielen Dank für eure Hilfe,

habe es erst mal über QSqlQueryModel gelöst. Werde mich aber trotzdem mit QAbstractItemDelegate beschäftigen müssen.

Gruß
Eugen
Antworten