这样的问题——通过QSqlRelationalTableModel与DB表关联的两个QTableView中有两个相关的SQLite表。第二个表中的每个条目都与第一个表中的一个条目相关联。有必要使通过选择第一个表中的一行,只有与第一个表的选定行关联的记录显示在第二个表中。代码如下所示:
void MainWindow::on_tableViewStudyPlansList_pressed(const QModelIndex &index)
{
int col = 3;
int row = index.row();
QModelIndex idx = ui->tableViewStudyPlansList->model()->index(row, col);
QString plan_name = ui->tableViewStudyPlansList->model()->data(idx).toString();
modelStudyPlan->setFilter(QString( SECTABLE "." SECTABLE_PLANNAME "='%1'").arg(plan_name));
//modelStudyPlan->setFilter(QString( SECTABLE_PLANNAME "='%1'").arg(plan_name));
//modelStudyPlan->setFilter(QString( "PlanName = '%1'").arg(plan_name));
modelStudyPlan->select();
}
问题是,虽然第一个表记录中的字段值选择正确,但第二个表中的所有记录都消失了,而不仅仅是那些与单元格中所选值不匹配的记录。选择完全指向链接表格的单元格。