-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel.cpp
More file actions
56 lines (44 loc) · 1.51 KB
/
model.cpp
File metadata and controls
56 lines (44 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*!
* \file
* \brief Source code for the Addressbook class.
* \author Denis Vasilenko <tuxtender@gmail.com>
* \date June 2020
* \copyright (C) 2020 Denis Vasilenko
*
* File contains an Addressbook class implementation.
*/
#include "model.h"
Model::Model(QObject *parent) : QStandardItemModel(parent)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("addrbooks.db");
db.open();
QStandardItem *parentItem;
QSqlQuery queryGroup("SELECT * FROM prj_group");
QString sql = "SELECT family, first_name, second_name "
"FROM prj_group_addrbook "
"WHERE prj_group_id = :id";
QSqlQuery queryName;
queryName.prepare(sql);
while (queryGroup.next()) {
parentItem = invisibleRootItem();
QStandardItem *item = new QStandardItem(queryGroup.value("name").toString());
parentItem->appendRow(item);
parentItem = item;
QVariant foreignKey = queryGroup.value("prj_group_id");
queryName.bindValue(":id", foreignKey);
queryName.exec();
while (queryName.next()) {
QStringList names;
int columnCount = queryName.record().count();
for (int i=0; i<columnCount; i++)
names << qvariant_cast<QString>(queryName.value(i));
QStandardItem *item = new QStandardItem(names.join(" "));
parentItem->appendRow(item);
}
}
db.close();
}
Model::~Model()
{
}