2016-10-22 4 views
0

Я использую QSqlRelationalTableModel для извлечения данных из базы данных и для отображения его используется tableView. Теперь, когда я обновляю свою базу данных, как автоматически обновлять tableView, чтобы показать ее? Я знаю, что мне нужно использовать функцию dataChanged(), чтобы сделать это автоматически, но я не знаю, как ее использовать? Любое предложение будет оценено по достоинству.Как обновить QTableView при обновлении базы данных?

Основной код выглядит следующим образом:

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

ответ

1

Нет, нет необходимости использовать dataChanged().

Вам нужно всего лишь позвонить QSqlRelationalTableModel::select() всякий раз, когда база данных обновляется. Это приведет к повторному заполнению модели из базы данных и обновлению видов, которые ее используют автоматически.

  • Если база данных обновляется внутри вашего приложения, вы можете просто позвонить model->select() после запросов обновления получить выполняется в приложении.
  • Если база данных обновляется из другого приложения, вам придется использовать что-то вроде PostgreSQL's event notification system, подписаться на уведомление из приложения с помощью QSqlDriver::subscribeToNotification() и вызвать model->select() в слоте, соединенным с notification() сигнала.

    Вы можете использовать QSqlDriver::hasFeature(QSqlDriver::EventNotifications), чтобы проверить, поддерживаются оповещения из базы данных.

+0

классный, спасибо, Майк. Это очень помогло мне. У меня есть еще один вопрос – FzLbMj

Смежные вопросы