Редакция 202 | Только различия | Не учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 202 | Редакция 204 | ||
---|---|---|---|
1 | 1 | #include "mymodel.h"
|
|
2 | 2 | ||
3 | 3 | MyModel::MyModel(QObject *parent) : |
|
4 | 4 | QSqlTableModel(parent) |
|
5 | 5 | {
|
|
6 | 6 | setEditStrategy(QSqlTableModel::OnManualSubmit); |
|
7 | 7 | icon_index = -1; |
|
8 | 8 | }
|
|
9 | 9 | ||
10 | 10 | Qt::ItemFlags MyModel::flags( |
|
11 | 11 | const QModelIndex &index) const { |
|
12 | 12 | Qt::ItemFlags flags = QSqlTableModel::flags(index); |
|
13 | 13 | ||
14 | 14 | ||
15 | 15 | ||
16 | 16 | ||
17 | 17 | /***********************************************
|
|
18 | 18 | ||
19 | 19 | if ((index.column() != 3) && (index.column() != 0))
|
|
20 | 20 | flags |= Qt::ItemIsEditable;
|
|
21 | 21 | //if (index.column() == 4)
|
|
22 | 22 | // flags |= Qt::ItemIsUserCheckable;
|
|
23 | 23 | else
|
|
24 | 24 | {
|
|
25 | 25 | if ((index.column() == 3) || (index.column() == 0)) flags &= ~Qt::ItemIsEditable; // çàïðåùàåì ðåäàêòèðîâàíèå òðåòüåãî ñòîëáöà
|
|
26 | 26 | }
|
|
27 | 27 | ||
28 | 28 | *************************************************/
|
|
29 | 29 | ||
30 | 30 | if (bolleans_list.indexOf(index.column()) != -1) |
|
31 | 31 | {
|
|
32 | 32 | flags |= Qt::ItemIsUserCheckable; // åñëè â ñòîëáöå òèï "BOOL", äåëàåì åãî âèáèðàåìûì |
|
33 | 33 | //flags |= Qt::ItemIsEnabled;
|
|
34 | 34 | flags &= ~Qt::ItemIsEditable; |
|
35 | 35 | }
|
|
36 | 36 | ||
37 | 37 | return flags; // òåêóùèé ñòîëáåö |
|
38 | 38 | ||
39 | 39 | ||
40 | 40 | }
|
|
41 | 41 | ||
42 | 42 | ||
43 | 43 | bool MyModel::setData(const QModelIndex &index, const QVariant &value, int role) { |
|
44 | - | ||
45 | 44 | bool lResult = false; |
|
- | 45 | if (bolleans_list.indexOf(index.column()) != -1) { |
|
46 | 46 | ||
47 | - | ||
48 | - | ||
49 | - | ||
50 | 47 | lResult = QSqlTableModel::setData(index, value, Qt::EditRole); |
|
51 | - | ||
52 | - | ||
53 | - | ||
54 | - | ||
55 | - | ||
56 | - | ||
57 | - | ||
58 | - | ||
59 | - | ||
60 | - | ||
61 | 48 | ||
- | 49 | MyModel::submitAll(); |
|
62 | 50 | ||
63 | 51 | }
|
|
64 | 52 | ||
65 | 53 | ||
66 | 54 | ||
67 | - | ||
68 | - | ||
69 | - | ||
70 | - | ||
71 | - | ||
72 | - | ||
73 | - | ||
74 | - | ||
75 | - | ||
76 | - | ||
77 | - | ||
78 | - | ||
79 | - | ||
80 | - | ||
81 | - | ||
82 | - | ||
83 | - | ||
84 | 55 | ||
85 | - | ||
86 | 56 | ||
87 | 57 | ||
- | 58 | else
|
|
- | 59 | {
|
|
88 | 60 | lResult = QSqlTableModel::setData(index, value, role); |
|
- | 61 | if (lResult) { |
|
- | 62 | QModelIndex newindex;
|
|
- | 63 | QSqlRecord rec = record(index.row()); |
|
89 | 64 | ||
90 | 65 | if (value.isNull()) { |
|
91 | 66 | rec.setNull(index.column()); |
|
92 | 67 | ||
93 | 68 | }
|
|
94 | 69 | else rec.setValue(index.column(), value); |
|
95 | 70 | ||
- | 71 | rec.setGenerated(index.column(), true); |
|
96 | 72 | lResult = updateRowInTable(index.row(), rec); |
|
97 | 73 | ||
98 | - | ||
99 | - | ||
100 | - | ||
101 | - | ||
102 | - | ||
103 | - | ||
104 | - | ||
105 | 74 | ||
106 | - | ||
107 | - | ||
108 | - | ||
109 | - | ||
110 | 75 | ||
111 | 76 | ||
- | 77 | ||
- | 78 | ||
- | 79 | }
|
|
- | 80 | if (value.isNull()) { |
|
- | 81 | select(); |
|
- | 82 | emit dataChanged(index, index); |
|
- | 83 | }
|
|
- | 84 | ||
- | 85 | }
|
|
- | 86 | ||
112 | 87 | return lResult; |
|
- | 88 | ||
- | 89 | ||
- | 90 | ||
- | 91 | ||
- | 92 | ||
- | 93 | }
|
|
- | 94 | ||
- | 95 | ||
- | 96 | ||
- | 97 | QVariant MyModel::data(const QModelIndex &index, int role) const { |
|
- | 98 | ||
- | 99 | QHash<int, bool> check; |
|
- | 100 | QVariant value = QSqlTableModel::data(index, role); |
|
- | 101 | QList <int> keys; |
|
- | 102 | QStringList values;
|
|
- | 103 | QList <int> files_keys; |
|
- | 104 | QStringList files_values;
|
|
- | 105 | keys = pointers_map.keys(); // ñïèñîê ñòîëáöîâ ñ óêàçàòåëÿìè |
|
- | 106 | values = pointers_map.values(); // ñïèñîê òàáëèö-õðàíèëèù îáúåêòîâ ðîäèòåëüñêèõ êëàññîâ |
|
- | 107 | files_keys = files_map.keys(); // ñïèñîê íîìåðîâ ñòîëáöîâ, õðàíÿùèõ ôàéëû |
|
- | 108 | files_values = files_map.values(); // ñïèñîê èìåò ñòîëáöîâ, õðàíÿùèõ ôàéëû |
|
- | 109 | ||
- | 110 | switch (role) { |
|
- | 111 | case Qt::DisplayRole: |
|
- | 112 | {
|
|
- | 113 | //if (check.contains(index.column()) && check.value(index.column()))
|
|
- | 114 | // return value.toInt() != 0 ? tr("Yes") : tr("No");
|
|
- | 115 | if (bolleans_list.indexOf(index.column()) != -1) |
|
- | 116 | {
|
|
- | 117 | return value.toInt() != 0 ? tr("Äà") : tr("Íåò"); // äëÿ êîëîíîê ñ òèïîì "BOOL" |
|
- | 118 | }
|
|
- | 119 | int index_of_list; |
|
- | 120 | index_of_list = keys. |