kramed
16th June 2008, 20:03
Hi there,
I seem to be overlooking something linking my TableView data to some other widgets on another form. Everything appears correct, I have followed all the examples I could find but I think I am overlooking something simple and was hoping for some help.
I want my application to be able to edit the TableView data via the form I have added. The problem I am running into right now is the form is not being mapped properly to the data. I have included a screenshot.
http://www.markstahler.ca/images/temp/mapper.png
Am I using the right signal to connect the two? Thanks in advance!
createConnection(); //Sqlite DB Connection is made here
// Create and sort model for Table View
model = new QSqlRelationalTableModel(ui.tableView);
model->setTable("course");
model->setSort(model->fieldIndex("discipline"), Qt::AscendingOrder);
model->setHeaderData(model->fieldIndex("discipline"), Qt::Horizontal, tr("Discipline"));
model->setHeaderData(model->fieldIndex("course"), Qt::Horizontal, tr("Course"));
model->setHeaderData(model->fieldIndex("grade"), Qt::Horizontal, tr("Grade"));
model->setHeaderData(model->fieldIndex("year"), Qt::Horizontal, tr("Year"));
model->setHeaderData(model->fieldIndex("credits"), Qt::Horizontal, tr("Credits"));
model->setHeaderData(model->fieldIndex("semester"), Qt::Horizontal, tr("Semester"));
model->select();
// Link table view on form to sql table in sqlite db
ui.tableView->setModel(model);
ui.tableView->setColumnHidden(model->fieldIndex("id"), true);
ui.tableView->resizeColumnsToContents();
void MainWindow::createSignals()
{
connect(ui.tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editEntry(QModelIndex)));
}
void MainWindow::editEntry(QModelIndex loc)
{
QSqlRecord record = model->record(ui.tableView->currentIndex().row());
// Create Form to Add/Edit Grades
EntryForm *entryform = new EntryForm(this);
// Map widgets to model
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->addMapping(entryform->ui.CourseComboBox, model->fieldIndex("discipline"));
mapper->addMapping(entryform->ui.CourseSpinBox, model->fieldIndex("course"));
mapper->addMapping(entryform->ui.YearLineEdit, model->fieldIndex("year"));
mapper->addMapping(entryform->ui.CreditSpinBox, model->fieldIndex("credits"));
mapper->addMapping(entryform->ui.SemesterLineEdit, model->fieldIndex("semester"));
// Draw form
entryform->exec();
mapper->setCurrentModelIndex(loc);
mapper->setCurrentIndex(0);
}
I seem to be overlooking something linking my TableView data to some other widgets on another form. Everything appears correct, I have followed all the examples I could find but I think I am overlooking something simple and was hoping for some help.
I want my application to be able to edit the TableView data via the form I have added. The problem I am running into right now is the form is not being mapped properly to the data. I have included a screenshot.
http://www.markstahler.ca/images/temp/mapper.png
Am I using the right signal to connect the two? Thanks in advance!
createConnection(); //Sqlite DB Connection is made here
// Create and sort model for Table View
model = new QSqlRelationalTableModel(ui.tableView);
model->setTable("course");
model->setSort(model->fieldIndex("discipline"), Qt::AscendingOrder);
model->setHeaderData(model->fieldIndex("discipline"), Qt::Horizontal, tr("Discipline"));
model->setHeaderData(model->fieldIndex("course"), Qt::Horizontal, tr("Course"));
model->setHeaderData(model->fieldIndex("grade"), Qt::Horizontal, tr("Grade"));
model->setHeaderData(model->fieldIndex("year"), Qt::Horizontal, tr("Year"));
model->setHeaderData(model->fieldIndex("credits"), Qt::Horizontal, tr("Credits"));
model->setHeaderData(model->fieldIndex("semester"), Qt::Horizontal, tr("Semester"));
model->select();
// Link table view on form to sql table in sqlite db
ui.tableView->setModel(model);
ui.tableView->setColumnHidden(model->fieldIndex("id"), true);
ui.tableView->resizeColumnsToContents();
void MainWindow::createSignals()
{
connect(ui.tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editEntry(QModelIndex)));
}
void MainWindow::editEntry(QModelIndex loc)
{
QSqlRecord record = model->record(ui.tableView->currentIndex().row());
// Create Form to Add/Edit Grades
EntryForm *entryform = new EntryForm(this);
// Map widgets to model
mapper = new QDataWidgetMapper(this);
mapper->setModel(model);
mapper->addMapping(entryform->ui.CourseComboBox, model->fieldIndex("discipline"));
mapper->addMapping(entryform->ui.CourseSpinBox, model->fieldIndex("course"));
mapper->addMapping(entryform->ui.YearLineEdit, model->fieldIndex("year"));
mapper->addMapping(entryform->ui.CreditSpinBox, model->fieldIndex("credits"));
mapper->addMapping(entryform->ui.SemesterLineEdit, model->fieldIndex("semester"));
// Draw form
entryform->exec();
mapper->setCurrentModelIndex(loc);
mapper->setCurrentIndex(0);
}