Russian Qt Forum

Qt => Model-View (MV) => Тема начата: OKTA от Май 06, 2015, 16:33



Название: QAbstractListModel
Отправлено: OKTA от Май 06, 2015, 16:33
Товарищи, приветствую!
Поясните, пожалуйста, механизм работы QListView при работе с моделью.

Не могу понять в чем косяк.. Если коротко, то суть в том, что добавляя несколько элементов в модель, представление может как отобразить их правильно, так может продублировать. Причем дублируются элементы только с индексом строго больше нуля. Нулевой всегда один ??? Как понимаю, представление ориентируется на вызов beginIsertRows и rowsCount для отображения элементов, но или я что-то забыл или что-то не догоняю  :'(


Название: Re: QAbstractListModel
Отправлено: gil9red от Май 06, 2015, 17:03
Все нормально отображается:
Код
Java
class LogModel extends QAbstractTableModel {
...
   public void add(TermState state) {
       beginInsertRows(null, States.size(), States.size());
       states.add(state);
       endInsertRows();
   }
...    
   List <TermState> states = new ArrayList <TermState> ();
}
 


Название: Re: QAbstractListModel
Отправлено: OKTA от Май 06, 2015, 17:20
Да так и делаю  ???
Просто не понимаю, откуда представление может взять информацию о том, что надо отобразить больше элементов, чем есть в модели, если rowsCount возвращает всегда правильное значение количества?


Название: Re: QAbstractListModel
Отправлено: OKTA от Май 06, 2015, 17:30
Дополнительный вопрос на мильён.. Самая правильная реализация, это когда модель и представление живут в одном потоке?


Название: Re: QAbstractListModel
Отправлено: Авварон от Май 06, 2015, 17:54
Дополнительный вопрос на мильён.. Самая правильная реализация, это когда модель и представление живут в одном потоке?

Они не могут жить в разных потоках


Название: Re: QAbstractListModel
Отправлено: OKTA от Май 06, 2015, 18:03
Да, косяк был именно в этом... Мьютексы не смогли исправить ситуацию.. :'(
Получается, опять же и сами данные для модели логичнее держать при самой модели.

Всем большое спасибо за помощь!