Guest User

Untitled

a guest
Oct 20th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.46 KB | None | 0 0
  1. // Виджет со вкладками...
  2. #include "familytab.h"
  3. #include <QVBoxLayout>
  4. #include "mydedelegate.h"
  5. #include "creport.h"
  6.  
  7.  
  8.  
  9. FamilyTab::FamilyTab(QWidget *parent)
  10. : QTabWidget(parent)
  11. {
  12.  
  13.  
  14. m_pAnketaModel = new QSqlRelationalTableModel(this);
  15. m_pAnketaModel->setTable("anketa");
  16. m_pAnketaModel->setFilter("idperson > 0");
  17. m_pAnketaModel->setSort(Anketa_fio,Qt::AscendingOrder);
  18. m_pAnketaModel->setHeaderData(Anketa_fio, Qt::Horizontal, tr("ФИО"));
  19. m_pAnketaModel->setHeaderData(Anketa_birthdate,Qt::Horizontal, tr("Дата рождения"));
  20. m_pAnketaModel->setHeaderData(Aketa_birthplace, Qt::Horizontal, tr("Место рождения"));
  21. m_pAnketaModel->setHeaderData(Anketa_adres, Qt::Horizontal,tr("Адрес"));
  22. m_pAnketaModel->setHeaderData(Anketa_nomerseria,Qt::Horizontal, tr("Номер/Серия"));
  23. m_pAnketaModel->setHeaderData(Anketa_characteristics, Qt::Horizontal, tr("Характеристика"));
  24. m_pAnketaModel->setHeaderData(Anketa_addingdate, Qt::Horizontal, tr("Время добавления"));
  25. m_pAnketaModel->select();
  26.  
  27. m_pAnketaView = new QTableView;
  28. m_pAnketaView->setModel(m_pAnketaModel);
  29. m_pAnketaView->setColumnHidden(Anketa_Id, true);
  30. m_pAnketaView->setSelectionMode(QAbstractItemView::SingleSelection);
  31. m_pAnketaView->setSelectionBehavior(QAbstractItemView::SelectRows);
  32. m_pAnketaView->resizeColumnsToContents();
  33.  
  34. m_pTrackRecordModel = new QSqlTableModel(this);
  35. m_pTrackRecordModel->setTable("workingtrack");
  36. m_pTrackRecordModel->setHeaderData(workingplace, Qt::Horizontal, tr("Место работы"));
  37. m_pTrackRecordModel->setHeaderData(working_enteringdate, Qt::Horizontal, tr("Дата поступления"));
  38. m_pTrackRecordModel->setHeaderData(working_sakingdate, Qt::Horizontal, tr("Дата увольнения"));
  39. m_pTrackRecordModel->setHeaderData(working_sakingreason, Qt::Horizontal, tr("Причина увольнения"));
  40. //m_pTrackRecordModel->select();
  41.  
  42. m_pTrackRecordView = new QTableView;
  43. m_pTrackRecordView->setModel(m_pTrackRecordModel);
  44. //m_pTrackRecordView->setItemDelegate(new MyDEDelegate(working_enteringdate, this));
  45. //m_pTrackRecordView->setItemDelegate(new MyDEDelegate(working_sakingdate, this));
  46. m_pTrackRecordView->setSelectionMode(QAbstractItemView::SingleSelection);
  47. m_pTrackRecordView->setSelectionBehavior(QAbstractItemView::SelectRows);
  48. m_pTrackRecordView->resizeColumnsToContents();
  49. // m_pList = new QListWidget;
  50.  
  51. //m_pMainLayout->addWidget(m_pList);
  52.  
  53. m_pLayout = new QGridLayout;
  54.  
  55. m_pAddButton = new QPushButton(QObject::tr("Добавить"));
  56. m_pAddButton->setFocusPolicy(Qt::NoFocus);
  57. m_pEditButton = new QPushButton(QObject::tr("Редактировать"));
  58. m_pEditButton->setFocusPolicy(Qt::NoFocus);
  59. m_pDeleteButton = new QPushButton(QObject::tr("Удалить"));
  60. m_pDeleteButton->setFocusPolicy(Qt::NoFocus);
  61. m_pReportButton = new QPushButton(QObject::tr("Отчёт"));
  62. m_pReportButton->setFocusPolicy(Qt::NoFocus);
  63. m_pOKButton = new QPushButton(QObject::tr("OK"));
  64. m_pOKButton->setFocusPolicy(Qt::NoFocus);
  65. m_pQuitButton = new QPushButton(QObject::tr("Выход"));
  66. m_pQuitButton->setFocusPolicy(Qt::NoFocus);
  67.  
  68.  
  69.  
  70. m_pButtonLayout = new QHBoxLayout;
  71. m_pButtonLayout->addWidget(m_pAddButton);
  72. m_pButtonLayout->addWidget(m_pEditButton);
  73. m_pButtonLayout->addWidget(m_pDeleteButton);
  74. m_pButtonLayout->addWidget(m_pReportButton);
  75. m_pButtonLayout->addWidget(m_pOKButton);
  76. m_pButtonLayout->addWidget(m_pQuitButton);
  77. m_pButtonLayout->addStretch();
  78.  
  79. m_pSplitter = new QSplitter(Qt::Vertical);
  80. m_pSplitter->addWidget(m_pAnketaView);
  81. m_pSplitter->addWidget(m_pTrackRecordView);
  82.  
  83. m_pMainLayout = new QVBoxLayout(this);
  84. m_pMainLayout->addWidget(m_pSplitter);
  85. m_pMainLayout->addLayout(m_pButtonLayout);
  86.  
  87. currentFamilyChanged (QModelIndex());
  88.  
  89. connect(m_pAnketaView->selectionModel(),
  90. SIGNAL(currentRowChanged(const QModelIndex &,
  91. const QModelIndex &)),
  92. this, SLOT(currentFamilyChanged(const QModelIndex &)));
  93. connect(m_pTrackRecordModel, SIGNAL(beforeInsert(QSqlRecord &)),
  94. this, SLOT(beforeInsertTrack(QSqlRecord &)));
  95.  
  96. connect(m_pAddButton, SIGNAL(clicked()), this, SLOT(AddTrack()));
  97. connect(m_pQuitButton, SIGNAL(clicked()), this, SLOT(close()));
  98. connect(m_pOKButton, SIGNAL(clicked()), this, SLOT(ApplyOK()));
  99. connect(m_pDeleteButton, SIGNAL(clicked()), this, SLOT(deleteTrack()));
  100. connect(m_pEditButton, SIGNAL(clicked()), this, SLOT(EditTrack()));
  101. connect(m_pReportButton, SIGNAL(clicked()), this, SLOT(OpenReport()));
  102.  
  103. //m_pLayout->setColumnStretch(2,1);
  104. // AddTabs();
  105. // FamilyTab addTabs;
  106. // addTabs.AddTabs();
  107. AddTabs();
  108. // addTabs.show();
  109. //m_pMainLayout->addLayout(m_pLayout);
  110. }
  111.  
  112. FamilyTab::~FamilyTab()
  113. {
  114.  
  115. }
  116.  
  117. void FamilyTab::currentFamilyChanged(const QModelIndex &index)
  118. {
  119. if (index.isValid())
  120. {
  121. QSqlRecord m_precord = m_pAnketaModel->record(index.row());
  122. int id = m_precord.value("idperson").toInt();
  123. m_pTrackRecordModel->setFilter(QString("idperson = %1").arg(id));
  124. }
  125. else
  126. {
  127. m_pTrackRecordModel->setFilter("idperson = -1");
  128. }
  129. m_pTrackRecordModel->select();
  130. }
  131.  
  132. void FamilyTab::AddTrack()
  133. {
  134. int row = 0;
  135. m_pTrackRecordModel->insertRow(row);
  136. QModelIndex index = m_pTrackRecordModel->index(row, workingplace);
  137. m_pTrackRecordView->setCurrentIndex(index);
  138. m_pTrackRecordView->edit(index);
  139. }
  140.  
  141. int FamilyTab::generateId(const QString &table)
  142. {
  143. QSqlQuery query;
  144. query.exec("SELECT MAX(id) FROM" + table);
  145. int id = 0;
  146. if (query.next())
  147. id = query.value(0).toInt() + 1;
  148. return id;
  149. }
  150.  
  151. void FamilyTab::beforeInsertTrack(QSqlRecord &record)
  152. {
  153. record.setValue("id", generateId("workingtrack"));
  154.  
  155. }
  156.  
  157. void FamilyTab::ApplyOK()
  158. {
  159. m_pTrackRecordModel->database().commit();
  160. }
  161.  
  162. void FamilyTab::deleteTrack()
  163. {
  164. // m_pTrackRecordView->setFocus();
  165. //QModelIndex index = m_pTrackRecordView->currentIndex();
  166.  
  167. m_pTrackRecordModel->removeRow(m_pTrackRecordView->currentIndex().row());
  168.  
  169. }
  170.  
  171. void FamilyTab::EditTrack()
  172. {
  173. int row = m_pTrackRecordView->currentIndex().row() ;
  174. QModelIndex index = m_pTrackRecordModel->index(row, workingplace);
  175.  
  176. m_pTrackRecordView->setCurrentIndex(index);
  177. m_pTrackRecordView->edit(index);
  178. //m_pTrackRecordModel->updateRowInTable(m_pTrackRecordView->currentIndex().row());
  179. }
  180.  
  181. void FamilyTab::OpenReport()
  182. {
  183. CReport m_pcreport;
  184. m_pcreport.exec();
  185. }
  186.  
  187. void FamilyTab::AddTabs()
  188. {
  189.  
  190. QSqlQuery query("SELECT fio FROM anketa");
  191.  
  192. int index = query.record().indexOf("fio");
  193. QString sBookva;
  194. query.exec();
  195. //QString name;
  196. while(query.next())
  197. {
  198. QString sFio = query.value(index).toString();
  199. sBookva = sFio[0];
  200. FamilyTab addTabs;
  201. addTab(&addTabs, sBookva);
  202.  
  203. }
  204. }
  205.  
  206. // главное окно
  207.  
  208. #include "mainwindow.h"
  209. #include <QSqlQuery>
  210.  
  211. #include <QtGui>
  212.  
  213.  
  214. Mainwindow::Mainwindow()
  215. {
  216. familytab = new FamilyTab;
  217. // familytab->resize(300, 100);
  218. resize(400, 400);
  219. setCentralWidget(familytab);
  220. //familytab->show();
  221. setWindowTitle(tr("Анкета"));
  222. }
Add Comment
Please, Sign In to add comment