[Qt] Dwa problemy związane z sql

0

Cześć, generalnie dopiero zaczynam, jeśli chodzi o zastosowanie sql z qt, i mam problem.
Chciałbym ustawić sobie w combobox pole nazwa z tabeli, zrobiłem więc tak:

genre = new QComboBox;
QSqlQueryModel *genreModel = new QSqlQueryModel(this);
genreModel->setQuery("SELECT nazwa FROM gatunki;");
genre->setModel(genreModel);
layout->addRow("Gatunek:",genre);

Combo jest w forumlarzu, gdy do zatwierdzę, pozycje dodają się do tabeli w bazie. Tyle, że zamist wybranej nazwy ma się dodać id. I właśnie tu mam problem, poniważ nie wiem jak je odczytać. Mógłbym odczytać po prostu currentIndex z combo, ale nie musi on odpowiadać precież id w tabeli. Mógłbym też zrobić dodatkowe zapytanie, które na podstawie nazwy wyszuka id, ale może jest lepsze rozwiązanie?

Drugi problem to QTableView, ma on ustawiony jako model obiekt klasy QSqlTableModel, gdy dodam pozycję do tabeli, chciałbym aby zaktualizował mi się widok.

0

Co do pierwszego problemu to:
Na combolota wrzucaj nazwę razem z id używając metody:
void QComboBox::addItem ( const QString & text, const QVariant & userData = QVariant() )
Wcześniej oczywiście zmień zapytanie SQL na:
SELECT nazwa, id FROM gatunki;
Następnie id zaznaczonego elementu wyciągaj tak:
zaznaczone_id = dialog->ui.comboBox->itemData(dialog->ui.comboBox->currentIndex()).toInt();

Jeśli chodzi o drugi problem to:
Po dodaniu elementu w tabeli SQL wywołaj na modelu metodę "select":
bool QSqlTableModel::select ()
Spowoduje ona zaktualizowanie danych w modelu i odświeżenie widoku w QTableView.

0

Ok, działa. Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1