Seite 1 von 1

ComboBox und TableView mit SQL

Verfasst: 9. Dezember 2010 09:56
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

Verfasst: 9. Dezember 2010 18:12
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...

Verfasst: 9. Dezember 2010 18:37
von upsala
Für 1. könnte man auch ein Model verwenden und der QComboBox zuweisen.