Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Виджет со вкладками...
- #include "familytab.h"
- #include <QVBoxLayout>
- #include "mydedelegate.h"
- #include "creport.h"
- FamilyTab::FamilyTab(QWidget *parent)
- : QTabWidget(parent)
- {
- m_pAnketaModel = new QSqlRelationalTableModel(this);
- m_pAnketaModel->setTable("anketa");
- m_pAnketaModel->setFilter("idperson > 0");
- m_pAnketaModel->setSort(Anketa_fio,Qt::AscendingOrder);
- m_pAnketaModel->setHeaderData(Anketa_fio, Qt::Horizontal, tr("ФИО"));
- m_pAnketaModel->setHeaderData(Anketa_birthdate,Qt::Horizontal, tr("Дата рождения"));
- m_pAnketaModel->setHeaderData(Aketa_birthplace, Qt::Horizontal, tr("Место рождения"));
- m_pAnketaModel->setHeaderData(Anketa_adres, Qt::Horizontal,tr("Адрес"));
- m_pAnketaModel->setHeaderData(Anketa_nomerseria,Qt::Horizontal, tr("Номер/Серия"));
- m_pAnketaModel->setHeaderData(Anketa_characteristics, Qt::Horizontal, tr("Характеристика"));
- m_pAnketaModel->setHeaderData(Anketa_addingdate, Qt::Horizontal, tr("Время добавления"));
- m_pAnketaModel->select();
- m_pAnketaView = new QTableView;
- m_pAnketaView->setModel(m_pAnketaModel);
- m_pAnketaView->setColumnHidden(Anketa_Id, true);
- m_pAnketaView->setSelectionMode(QAbstractItemView::SingleSelection);
- m_pAnketaView->setSelectionBehavior(QAbstractItemView::SelectRows);
- m_pAnketaView->resizeColumnsToContents();
- m_pTrackRecordModel = new QSqlTableModel(this);
- m_pTrackRecordModel->setTable("workingtrack");
- m_pTrackRecordModel->setHeaderData(workingplace, Qt::Horizontal, tr("Место работы"));
- m_pTrackRecordModel->setHeaderData(working_enteringdate, Qt::Horizontal, tr("Дата поступления"));
- m_pTrackRecordModel->setHeaderData(working_sakingdate, Qt::Horizontal, tr("Дата увольнения"));
- m_pTrackRecordModel->setHeaderData(working_sakingreason, Qt::Horizontal, tr("Причина увольнения"));
- //m_pTrackRecordModel->select();
- m_pTrackRecordView = new QTableView;
- m_pTrackRecordView->setModel(m_pTrackRecordModel);
- //m_pTrackRecordView->setItemDelegate(new MyDEDelegate(working_enteringdate, this));
- //m_pTrackRecordView->setItemDelegate(new MyDEDelegate(working_sakingdate, this));
- m_pTrackRecordView->setSelectionMode(QAbstractItemView::SingleSelection);
- m_pTrackRecordView->setSelectionBehavior(QAbstractItemView::SelectRows);
- m_pTrackRecordView->resizeColumnsToContents();
- // m_pList = new QListWidget;
- //m_pMainLayout->addWidget(m_pList);
- m_pLayout = new QGridLayout;
- m_pAddButton = new QPushButton(QObject::tr("Добавить"));
- m_pAddButton->setFocusPolicy(Qt::NoFocus);
- m_pEditButton = new QPushButton(QObject::tr("Редактировать"));
- m_pEditButton->setFocusPolicy(Qt::NoFocus);
- m_pDeleteButton = new QPushButton(QObject::tr("Удалить"));
- m_pDeleteButton->setFocusPolicy(Qt::NoFocus);
- m_pReportButton = new QPushButton(QObject::tr("Отчёт"));
- m_pReportButton->setFocusPolicy(Qt::NoFocus);
- m_pOKButton = new QPushButton(QObject::tr("OK"));
- m_pOKButton->setFocusPolicy(Qt::NoFocus);
- m_pQuitButton = new QPushButton(QObject::tr("Выход"));
- m_pQuitButton->setFocusPolicy(Qt::NoFocus);
- m_pButtonLayout = new QHBoxLayout;
- m_pButtonLayout->addWidget(m_pAddButton);
- m_pButtonLayout->addWidget(m_pEditButton);
- m_pButtonLayout->addWidget(m_pDeleteButton);
- m_pButtonLayout->addWidget(m_pReportButton);
- m_pButtonLayout->addWidget(m_pOKButton);
- m_pButtonLayout->addWidget(m_pQuitButton);
- m_pButtonLayout->addStretch();
- m_pSplitter = new QSplitter(Qt::Vertical);
- m_pSplitter->addWidget(m_pAnketaView);
- m_pSplitter->addWidget(m_pTrackRecordView);
- m_pMainLayout = new QVBoxLayout(this);
- m_pMainLayout->addWidget(m_pSplitter);
- m_pMainLayout->addLayout(m_pButtonLayout);
- currentFamilyChanged (QModelIndex());
- connect(m_pAnketaView->selectionModel(),
- SIGNAL(currentRowChanged(const QModelIndex &,
- const QModelIndex &)),
- this, SLOT(currentFamilyChanged(const QModelIndex &)));
- connect(m_pTrackRecordModel, SIGNAL(beforeInsert(QSqlRecord &)),
- this, SLOT(beforeInsertTrack(QSqlRecord &)));
- connect(m_pAddButton, SIGNAL(clicked()), this, SLOT(AddTrack()));
- connect(m_pQuitButton, SIGNAL(clicked()), this, SLOT(close()));
- connect(m_pOKButton, SIGNAL(clicked()), this, SLOT(ApplyOK()));
- connect(m_pDeleteButton, SIGNAL(clicked()), this, SLOT(deleteTrack()));
- connect(m_pEditButton, SIGNAL(clicked()), this, SLOT(EditTrack()));
- connect(m_pReportButton, SIGNAL(clicked()), this, SLOT(OpenReport()));
- //m_pLayout->setColumnStretch(2,1);
- // AddTabs();
- // FamilyTab addTabs;
- // addTabs.AddTabs();
- AddTabs();
- // addTabs.show();
- //m_pMainLayout->addLayout(m_pLayout);
- }
- FamilyTab::~FamilyTab()
- {
- }
- void FamilyTab::currentFamilyChanged(const QModelIndex &index)
- {
- if (index.isValid())
- {
- QSqlRecord m_precord = m_pAnketaModel->record(index.row());
- int id = m_precord.value("idperson").toInt();
- m_pTrackRecordModel->setFilter(QString("idperson = %1").arg(id));
- }
- else
- {
- m_pTrackRecordModel->setFilter("idperson = -1");
- }
- m_pTrackRecordModel->select();
- }
- void FamilyTab::AddTrack()
- {
- int row = 0;
- m_pTrackRecordModel->insertRow(row);
- QModelIndex index = m_pTrackRecordModel->index(row, workingplace);
- m_pTrackRecordView->setCurrentIndex(index);
- m_pTrackRecordView->edit(index);
- }
- int FamilyTab::generateId(const QString &table)
- {
- QSqlQuery query;
- query.exec("SELECT MAX(id) FROM" + table);
- int id = 0;
- if (query.next())
- id = query.value(0).toInt() + 1;
- return id;
- }
- void FamilyTab::beforeInsertTrack(QSqlRecord &record)
- {
- record.setValue("id", generateId("workingtrack"));
- }
- void FamilyTab::ApplyOK()
- {
- m_pTrackRecordModel->database().commit();
- }
- void FamilyTab::deleteTrack()
- {
- // m_pTrackRecordView->setFocus();
- //QModelIndex index = m_pTrackRecordView->currentIndex();
- m_pTrackRecordModel->removeRow(m_pTrackRecordView->currentIndex().row());
- }
- void FamilyTab::EditTrack()
- {
- int row = m_pTrackRecordView->currentIndex().row() ;
- QModelIndex index = m_pTrackRecordModel->index(row, workingplace);
- m_pTrackRecordView->setCurrentIndex(index);
- m_pTrackRecordView->edit(index);
- //m_pTrackRecordModel->updateRowInTable(m_pTrackRecordView->currentIndex().row());
- }
- void FamilyTab::OpenReport()
- {
- CReport m_pcreport;
- m_pcreport.exec();
- }
- void FamilyTab::AddTabs()
- {
- QSqlQuery query("SELECT fio FROM anketa");
- int index = query.record().indexOf("fio");
- QString sBookva;
- query.exec();
- //QString name;
- while(query.next())
- {
- QString sFio = query.value(index).toString();
- sBookva = sFio[0];
- FamilyTab addTabs;
- addTab(&addTabs, sBookva);
- }
- }
- // главное окно
- #include "mainwindow.h"
- #include <QSqlQuery>
- #include <QtGui>
- Mainwindow::Mainwindow()
- {
- familytab = new FamilyTab;
- // familytab->resize(300, 100);
- resize(400, 400);
- setCentralWidget(familytab);
- //familytab->show();
- setWindowTitle(tr("Анкета"));
- }
Add Comment
Please, Sign In to add comment