Затем создается
Конструктор
01 void ArtistForm::addArtist
02 {
03 int row = model->rowCount;
04 model->insertRow(row);
05 QModelIndex index = model->index(row, Artist_Name);
06 tableView->setCurrentIndex(index);
07 tableView->edit(index);
08 }
Для добавления нового артиста мы вставляем одну пустую строку в конец табличного представления
01 void ArtistForm::beforeInsertArtist(QSqlRecord &record)
02 {
03 record.setValue("id", generateId("artist"));
04 }
В конструкторе мы связываем сигнал модели
Поскольку нам потребуется вызывать функцию
01 inline int generateId(const QString &table)
02 {
03 QSqlQuery query;
04 query.exec("SELECT MAX(id) FROM " + table);
05 int id = 0;
06 if (query.next)
07 id = query.value(0).tolnt + 1;
08 return id;
09 }
Функция
Удаление — это последняя операция, которую позволяет сделать диалоговое окно
01 void ArtistForm::deleteArtist
02 {
03 tableView->setFocus;
04 QModelIndex index = tableView->currentIndex;
05 if (!index.isValid)
06 return;
07 QSqlRecord record = model->record(index.row);
08 QSqlTableModel cdModel;
09 cdModel.setTable("cd");
10 cdModel.setFilter("artistid = " + record.value("id").toString);
11 cdModel.select;
12 if (cdModel.rowCount == 0) {
13 model->removeRow(tableView->currentIndex.row);
14 } else {
15 QMessageBox::information(this, tr("Delete Artist"),
16 tr("Cannot delete %1 because there are CDs associated "
17 "with this artist in the collection.")
18 .arg(record.value("name").toString));
19 }
20 }