ComboBox und TableView mit SQL

Alles rund um die Programmierung mit Qt
Antworten
Rabi
Beiträge: 1
Registriert: 9. Dezember 2010 09:37
Kontaktdaten:

ComboBox und TableView mit SQL

Beitrag von Rabi »

Hallo Leute,
das hier ist mein erster Post, hoffe ihr könnt mir ein wenig helfen, denn ich werde eure Hilfe noch etwas öfters brauchen.

Ich habe nun folgendes zwei Probleme:

1.) Ich habe eine ComboBox mit dem QTDesigner erstellt und möchte gerne aus meiner SQLITE-Datenbank dort verschiedene Einträge anzeigen lassen, dass wäre in meinem Fall id aus der Datenbank images.
Ich dachte mir eigentlich es müsste in etwa so funktionieren:

Code: Alles auswählen

    QSqlQuery query;
    query.prepare("SELECT id FROM images");
Nur wie bekomme ich jetzt diese ganzen IDs, die eben PrimaryKey besitzen, in der Combobox aufgelistet werden.


2.) Ich habe eine SqlTabele erstellt, die mir eben meine ganzen Einträge aus der SQLITE-Datenbank ausliest und in einer Tabelle eben dann schön darstellt, soweit kein Problem.

Nur ich habe folgenden Code, in eine Funktion erstellt:

Code: Alles auswählen

void Newstabelle::exec()
{
    QSqlQueryModel *model = new QSqlQueryModel;
    model->setQuery("SELECT id, titel, text FROM news");
    model->setHeaderData(0, Qt::Horizontal, tr("ID"));
    model->setHeaderData(1, Qt::Horizontal, tr("Titel"));
    model->setHeaderData(2, Qt::Horizontal, tr("Inhalt"));

    QTableView *view = new QTableView;
    view->setModel(model);
    view->show();
}
Jedoch wird die Tabelle dann gar nicht angezeigt.

Wenn ich es in keine Funktion, also nur:

Code: Alles auswählen

    QSqlQueryModel *model = new QSqlQueryModel;
    model->setQuery("SELECT id, titel, text FROM news");
    model->setHeaderData(0, Qt::Horizontal, tr("ID"));
    model->setHeaderData(1, Qt::Horizontal, tr("Titel"));
    model->setHeaderData(2, Qt::Horizontal, tr("Inhalt"));

    QTableView *view = new QTableView;
    view->setModel(model);
    view->show();
schreibe.


Wird die Tabelle immer in einem eigenen Fenster angezeigt, ich möchte sie jedoch in meinem MainWindow angezeigt bekommen.

Hoffe ihr könnt mir schnell helfen.


Mit freundlichen Grüßen,
Rabi
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. QSqlQuery.next(), QSqlQuery.value() und QComboBox.insertItem()
2. Wo wird exec() aufgerufen. Abgesehen davon - normalerweise stellt man ein QTableView nicht einfach so da sondern in einen Dialog/Fenster.
Sieht so aus als würden hier Grundlagen fehlen -> Qt hat gute Beispiele...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Für 1. könnte man auch ein Model verwenden und der QComboBox zuweisen.
Antworten