Автоматическое обновление данных в TableView и отслеживание всех изменений в QSqlTableModel

У меня есть TableView и QSqlTableModel в качестве модели для этого TableView. Они подключены, как написано здесь (второй способ).

Я бы хотел, чтобы TableView автоматически обновлял свое представление (данные) (когда что-то вставлялось/обновлялось/удалялось в модели). Как мне это сделать?

Можно ли как-то отследить все изменения в QSqlTableModel (вставка/обновление/удаление) по одному сигналу? Да, возможно, я могу следить за сигналами rowsInserted, rowsModed и rowsRemoved, но может ли быть один сигнал для любого типа изменений?


person alr    schedule 25.10.2014    source источник
comment
в вашем классе QsqlTableModel вы должны выдать SIGNAL для ex dataChanged() в методе, где, по вашему мнению, произошли изменения, и подключить его к SLOT, чтобы делать то, что вы хотите   -  person Redanium    schedule 26.10.2014


Ответы (1)


Похоже, что в QSqlTableModel или его базовых классах нет ни одного сигнала. Но я полагаю, что если вы не хотите реализовывать отдельный слот для каждого сигнала, вы можете подключить эти сигналы к пользовательскому сигналу. Таким образом, каждый раз, когда испускается один из сигналов rowsInserted, rowsMoved..., он автоматически выдает ваш собственный сигнал.

ОБНОВЛЕНИЕ: примечание: сигналы rowsInserted и т. д. взяты из базового класса QAbstractItemModel. Возможно, будет проще работать с сигналами QSqlTableModel, такими как: beforeDelete, beforeInsert и т. д.

person Sean Shirazi    schedule 25.10.2014