数据库更新后如何更新QTableView?

时间:2016-10-22 04:20:31

标签: database qt tableview

我使用QSqlRelationalTableModel从数据库中提取数据,并使用tableView来显示数据。现在,当我更新数据库时,如何自动更新tableView以显示它?我知道我需要使用函数dataChanged()自动生成,但我不知道如何使用它?任何建议将不胜感激。

主要代码如下:

QSqlRelationalTableModel *model = new QSqlRelationalTableModel(NULL, db);
model->setTable(tableName);
model->select();
tableView->setModel(model);
tableView->show();

1 个答案:

答案 0 :(得分:2)

不,不需要使用dataChanged()

每当数据库更新时,您只需要调用QSqlRelationalTableModel::select()。这将从数据库重新填充模型,并自动更新正在使用它的视图。

  • 如果数据库是从您的应用程序中更新的,则可以在应用程序中执行更新查询后调用model->select()
  • 如果数据库是从其他应用程序更新的,则您必须使用PostgreSQL's event notification system之类的内容,使用{{3}订阅应用程序中的通知并在连接到QSqlDriver::subscribeToNotification()信号的插槽中调用model->select()

    您可以使用notification()检查数据库中的通知是否受支持。