Я попытался создать пользовательский интерфейс, который отображает содержимое таблицы, в то время как данные обновляются каждую секунду.QTableView сохраняет выбор после обновления модели
Поэтому у меня есть цепь моделей:
- QSqlTableModel - для получения доступа к таблицам содержания
- MyModel - унаследованный от QIdentityProxyModel изменения данных немного (источник является TableModel)
- SomeFilterModels - которые имеют MyModel как источник
Эта цепочка заканчивается QTableView. Поскольку QSqlTableModel обновляется каждую секунду, любой выбор в TableView также удаляется каждую секунду. Теперь у меня было две идеи, чтобы исправить это.
- Запретить обнаружение изменений в таблицеModel. Что плохо работает.
- Захват некоторых событий, которые были запущены до и после того, как модель собирается сменить, и восстановить текущий выбор. К сожалению, QIdentityProxyModel не передает сигналы , такие как modelAboutToBeReset или modelReset или dataChanged. Также невозможно повторно использовать эти сигналы от MyModel, поскольку они являются частными.
Я искал другие способы безотказной борьбы с этими проблемами обновления. Но я не могу себе представить, что я первый человек, который использует цепочку прокси-моделей в сочетании с периодическим обновлением модели и выбором.
Может ли кто-нибудь дать мне несколько советов?
Заранее спасибо.
Может стоит отметить:
- Один QSqlTableModel используется для многих TableViews. (С другой цепочкой FilterProxyModel.) Поэтому я не могу просто прекратить обновление, потому что один вид имеет выбор.
- Вы можете думать, что я знаю, когда я вызываю метод обновления моделей. Но на данный момент это немного сложно пропустить эту корытовую архитектуру. Я имею в виду, что модель обновлена, и TableView уже подключен к обновленной модели через некоторые ProxyModels. Не должно быть необходимости в другом способе общения.
Надеюсь, что мой вопрос имеет смысл.
Мое первое замечание состояло в том, чтобы обновлять только изменения в вашей модели, но поскольку вы используете модель SQL, я сомневаюсь, что вы можете получить такую заметную видимость изменений. Есть ли какой-нибудь идентификатор, который вы можете получить из выбранных данных, чтобы узнать, какие элементы выбраны, а затем найти индексы модели, когда модель обновится? –
@ CalebHuitt-cjhuitt Я могу получить эти идентификаторы, но я не знаю, когда модель обновится, чтобы я мог получить выбор. – r2p2