// Initialize model
productModel->setTable("products");
productModel->setSort(2, Qt::AscendingOrder);
// Remeber the indexes of the columns
vendor_id = productModel->fieldIndex("vendor_id");
basecurrency_id = productModel->fieldIndex("basecurrency_id");
// Set the relations to the other database tables
productModel
->setRelation
(vendor_id,
QSqlRelation("vendors",
"id",
"company"));
productModel
->setRelation
(basecurrency_id,
QSqlRelation("currencies",
"id",
"currency"));
// set table header
productModel->setHeaderData(productModel->fieldIndex("product"), Qt::Horizontal, tr("Name"));
productModel->setHeaderData(vendor_id, Qt::Horizontal, tr("Vendor"));
productModel->setHeaderData(productModel->fieldIndex("baseprice"), Qt::Horizontal, tr("Base Price"));
productModel->setHeaderData(basecurrency_id, Qt::Horizontal, tr("Base Currency"));
productModel->setHeaderData(productModel->fieldIndex("price"), Qt::Horizontal, tr("Price"));
// Populate the model
if(!productModel->select()) {
showError(productModel->lastError());
return;
}
// Initialize table view
productTableView->setModel(productModel);
productTableView->resizeColumnsToContents();
// hide fields in table
// productTableView->setColumnHidden(productModel->fieldIndex("id"), true);
productTableView->setColumnHidden(productModel->fieldIndex("description"), true);
// set delegate
// productTableView->setItemDelegate(new QSqlRelationalDelegate(productTableView));
// Initialize the combo boxes
productBaseCurrencyComboBox->setModel(productModel->relationModel(basecurrency_id));
productBaseCurrencyComboBox->setModelColumn(productModel->relationModel(basecurrency_id)->fieldIndex("currency"));
// productBaseCurrencyComboBox->setCurrentIndex(0);
productVendorComboBox->setModel(productModel->relationModel(vendor_id));
productVendorComboBox->setModelColumn(productModel->relationModel(vendor_id)->fieldIndex("company"));
// productVendorComboBox->setCurrentIndex(0);
// Initialize widget mapper
mapper->setModel(productModel);
mapper->addMapping(productNameLineEdit, productModel->fieldIndex("product"));
mapper->addMapping(productVendorComboBox, vendor_id);
mapper->addMapping(productDescriptionTextEdit, productModel->fieldIndex("description"));
mapper->addMapping(productBasepriceLineEdit, productModel->fieldIndex("baseprice"));
mapper->addMapping(productBaseCurrencyComboBox, basecurrency_id);
mapper->addMapping(productPriceLineEdit, productModel->fieldIndex("price"));
mapper->toPrevious();
productTableView->setCurrentIndex(productModel->index(0, 0));