Название: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: VAP от Апрель 03, 2010, 16:40 Привет всем!
Столкнулся со следующей проблемой: после производимых изменений в модели(QAbstractListModel), setData(const QModelIndex &index, const QVariant &value, int role), вьюха(QListView) не показывает эти изменения до тех пор пока не поподает "в фокус". Для "обхода" этой проблемы, приходится выставлять вью в принудительный фокус при помощи setFocus(); Но как только пришлось производить изменения с большим количеством данных(много итемов с чекбоксами, которые нужно "отмечать"), то такой метод становится не совсем хорош из-за уже заметной инерционности. Может кто-то подсказать, как обойти подобную проблему? Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: Пантер от Апрель 03, 2010, 16:48 Модель твоя? Нужные сигналы о изменении эмитишь?
Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: VAP от Апрель 03, 2010, 16:59 Из кода модели:
Код: bool ConfigModel::setData(const QModelIndex &index, Для изменения вызываю сигнал-слот: Код: connect(setCheckBox, SIGNAL(stateChanged(int)), Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: Kolobok от Апрель 03, 2010, 17:36 Код: if (value == Qt::Checked) { Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: VAP от Апрель 03, 2010, 18:05 Какай еще там должен быть сигнал???
Все изменения состояния я пишу в QSet<int> checkedRows;A отображаю в: Код: QVariant ConfigModel::data(const QModelIndex &index, int role) const Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: Kolobok от Апрель 03, 2010, 18:17 В setData() ты высылаешь сигнал только если новое значение не равно Qt::Checked. Попробуй так
Код: bool ConfigModel::setData(const QModelIndex &index, Название: Re: Как увидеть изменения в модели если вьюха "не в фокусе"? Отправлено: VAP от Апрель 03, 2010, 18:41 Спасибо Kolobok, помогло. Вопрос снят.
|