Ik probeer een applicatie te maken om de tijd bij te houden die ik aan bepaalde taken besteed. Dit doe ik door middel van een QSQLITE database met daarin twee tabellen. Deze benader ik middels een QSqlRelationalTableModel welke ik middels een subklasse van QSqlRelationalDelegate verbind aan een QTableView.
De database ziet er zo uit:
In principe werkt dit prima. Echter het toevoegen van en rij gaat nog niet helemaal naar wens. Het liefst zou ik zien dat er ieder moment een lege rij in beeld is die gevuld kan worden. Op dit moment heb ik een knop QAction welke deze toevoegd aan het model middels de volgende code:
Dit gaat goed. Vervolgens heb ik een lege rij die ik in kan vullen. Deze wordt na een enter netjes in de database gezet. Echter als ik meerdere keren een op de knop druk dan krijg ik meerdere lege rijen en vanaf dit punt snapt Qt het niet meer.

Nieuwe rijen worden aan het eind toegevoegd. De rij die geedit wordt (*) is rij 4. Ik kan alleen de kollomen in rij 3 selecteren en invullen maar zodra ik een ander veld aanklik vergeet de applicatie deze data (velden blijven blanco). De andere rijen zijn uberhaupt niet te selecteren.
Iemand een idee hoe dit op te lossen of hier eerder mee te maken gehad? Onderstaande code is ter referentie toegevoegd, het is niet mijn bedoeling jullie die tot de letter door te laten lezen en debuggen
De database ziet er zo uit:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| -- Describe ACTIVITIES CREATE TABLE activities ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "date" TEXT NOT NULL, "time" INTEGER NOT NULL, "description" TEXT NOT NULL, "ibms_task" TEXT NOT NULL ) -- Describe IBMS_TASKS CREATE TABLE "ibms_tasks" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT ) |
In principe werkt dit prima. Echter het toevoegen van en rij gaat nog niet helemaal naar wens. Het liefst zou ik zien dat er ieder moment een lege rij in beeld is die gevuld kan worden. Op dit moment heb ik een knop QAction welke deze toevoegd aan het model middels de volgende code:
C++:
1
2
3
4
5
6
7
8
9
10
| void MainWindow::insertRecord() { m_tableModel->submit(); QSqlRecord record = m_tableModel->record(); bool rowInserted = m_tableModel->insertRecord(-1, record); // int row = m_tableModel->rowCount(); // bool rowInserted = m_tableModel->insertRow(row); qDebug() << "Insert row: " << rowInserted; qDebug() << QSqlDatabase::database().lastError(); } |
Dit gaat goed. Vervolgens heb ik een lege rij die ik in kan vullen. Deze wordt na een enter netjes in de database gezet. Echter als ik meerdere keren een op de knop druk dan krijg ik meerdere lege rijen en vanaf dit punt snapt Qt het niet meer.

Nieuwe rijen worden aan het eind toegevoegd. De rij die geedit wordt (*) is rij 4. Ik kan alleen de kollomen in rij 3 selecteren en invullen maar zodra ik een ander veld aanklik vergeet de applicatie deze data (velden blijven blanco). De andere rijen zijn uberhaupt niet te selecteren.
Iemand een idee hoe dit op te lossen of hier eerder mee te maken gehad? Onderstaande code is ter referentie toegevoegd, het is niet mijn bedoeling jullie die tot de letter door te laten lezen en debuggen
C++:
1
| *snip* |
[ Voor 45% gewijzigd door RobIII op 10-02-2011 22:15 ]