void DbTab::delButtonPressed() { QModelIndexList list = selectedIndexes(table); if(table==tables[0].second) { for(int i=0; i<list.count(); i++) { int id=table->item(list.at(i).row(),5)->data(Qt::DisplayRole).toInt(); Database::getInstance().deleteSnapshot(id); } reloadTable(0); } else if(table==tables[1].second) { for(int i=0; i<list.count(); i++) { int id=table->item(list.at(i).row(),5)->data(Qt::DisplayRole).toInt(); Database::getInstance().deleteScene(id); } reloadTable(1); } else if(table==tables[2].second) { for(int i=0; i<list.count(); i++) { int id=table->item(list.at(i).row(),2)->data(Qt::DisplayRole).toInt(); if(id == ROBOT_ID) { QMessageBox::warning(this, "Ошибка", "Робот не может быть удален", QMessageBox::Ok); return; } Database::getInstance().deleteDescription(id); } reloadTable(2); } else if(table==tables[3].second) { for(int i=0; i<list.count(); i++) { int id=table->item(list.at(i).row(),4)->data(Qt::DisplayRole).toInt(); Database::getInstance().deleteObject(id); } reloadTable(3); } }
void DbTab::changeButtonPressed() { if(table==tables[2].second) { AddChangeDescrDialog *dialog=new AddChangeDescrDialog(false,this); dialog->setName(table->item(table->currentRow(),0)->data(Qt::DisplayRole).toString()); dialog->setDescription(table->item(table->currentRow(),1)->data(Qt::DisplayRole).toString()); int result=dialog->exec(); if(result==QDialog::Accepted) { Description description; description.name=dialog->name(); description.description=dialog->description(); description.id=table->item(table->currentRow(),2)->data(Qt::DisplayRole).toInt(); Database::getInstance().changeDescription(description); reloadTable(2); } } if(table==tables[3].second) { AddObjectDialog *dialog=new AddObjectDialog(this,false); dialog->setPhysHeight(table->item(table->currentRow(),1)->data(Qt::DisplayRole).toInt()); int result=dialog->exec(); } }
Departments::Departments(QSqlDatabase& db, QWidget *parent): QDialog(parent), ui(new Ui::Departments), _db(&db) { ui->setupUi(this); _searchAgain = true; _model = new QSqlRelationalTableModel(this, *_db); _model->setTable("departments"); _model->setEditStrategy(QSqlTableModel::OnFieldChange); _model->setRelation(2, QSqlRelation("faculties", "fc_id", "fc_name")); reloadTable(); QTableView* view = ui->tableView; view->setModel(_model); view->setItemDelegate(new QSqlRelationalDelegate(view)); }
void Departments::on_addButton_clicked() { int fc_id = IdRetriever::getId(*_db, "faculties", "fc_id", "fc_name", "Faculty", "Choose faculty", this); if (fc_id == -1) return; QSqlQuery query(*_db); query.prepare("INSERT INTO departments(dp_fc, dp_name)" " VALUES (:fc_id, '');"); query.bindValue(":fc_id", fc_id); query.exec(); if (query.lastError().isValid()) { qDebug() << query.lastQuery(); qDebug() << query.lastError(); } reloadTable(); }
void Departments::on_delButton_clicked() { QModelIndex idx = ui->tableView->currentIndex(); if (idx.row() == -1) return; QSqlQuery query(*_db); query.prepare("DELETE FROM books_authors WHERE bka_bk IN " "(SELECT bk_id FROM books WHERE bk_dp = :id);"); query.bindValue(":id", _model->index(idx.row(), 0).data().toInt()); query.exec(); query.prepare("DELETE FROM books WHERE bk_dp = :id;"); query.bindValue(":id", _model->index(idx.row(), 0).data().toInt()); query.exec(); query.prepare("DELETE FROM departments WHERE dp_id = :id;"); query.bindValue(":id", _model->index(idx.row(), 0).data().toInt()); query.exec(); if (query.lastError().isValid()) { qDebug() << query.lastQuery(); qDebug() << query.lastError(); } reloadTable(); }
DbTab::DbTab(QWidget *parent) : QWidget(parent) { // tables[0]=std::make_pair("Снимки", DatabaseView::getInstance().snapshotsTable()); // tables[1]=std::make_pair("Сцены", DatabaseView::getInstance().scenesTable()); // tables[2]=std::make_pair("Описания объектов", DatabaseView::getInstance().descriptionsTable()); // tables[3]=std::make_pair("Объекты", DatabaseView::getInstance().objectsTable()); // tables[4]=std::make_pair("Карты",DatabaseView::getInstance().descriptionsTable()); tableBox = new QComboBox(); mainLayout = new QGridLayout(); mainLayout->addWidget(tableBox,0,4,1,2); for(std::map<int,std::pair<QString,QTableWidget*> >::iterator it=tables.begin(); it!=tables.end(); it++) { tableBox->addItem(it->second.first); mainLayout->addWidget(it->second.second,1,1,5,5); it->second.second->hide(); } connect(tableBox,SIGNAL(currentIndexChanged(int)),SLOT(tableChanged(int))); table=tables[0].second; table->show(); addButton=new QPushButton("Добавить"); connect(addButton,SIGNAL(clicked()),SLOT(addButtonPressed())); mainLayout->addWidget(addButton,6,2,1,1); addButton->hide(); changeButton=new QPushButton("Изменить"); connect(changeButton,SIGNAL(clicked()),SLOT(changeButtonPressed())); mainLayout->addWidget(changeButton,6,3,1,1); changeButton->hide(); QPushButton *reloadButton=new QPushButton("Обновить"); connect(reloadButton,SIGNAL(clicked()),SLOT(reloadTable())); mainLayout->addWidget(reloadButton,6,4,1,1); QPushButton *delButton=new QPushButton("Удалить"); connect(delButton,SIGNAL(clicked()),SLOT(delButtonPressed())); mainLayout->addWidget(delButton,6,5,1,1); setLayout(mainLayout); }