Название: [qt4.3.0] Проблема с моделью на основе QAbstractTableModel Отправлено: Icoz от Июль 23, 2007, 16:28 В общем хочу сделать следующее: есть treeview с категориями данных(там название, еще кое-что), есть сами данные для listview - соответственно пишу 2 разных модели.
Пишу модель по следующей схеме: Код: class Node1 { //категории данных Есть 2 модели: Код: Model1 : public QAbstractItemModel - к ней претензий нет, идет в treeview По клику на TreeView вызывается метод модели2 для смены данных согласно выбранной категории: вызов(который почему-то не всегда вызывается!): Код: void CMainWindow::on_treeview_clicked(const QModelIndex &index){ реализация: Код: void Model2::setNewData(QList<node2 *> new_data) Теперь сама проблема: Когда нажимаю мышкой на элемент treeview, в котором находятся 2 элемента, обновляется listview - все ок. Затем выбираю другой элемент с дочерними 3-мя элементами - тоже ок. А если переключаться с категории с 2-мя на категорию опять же с двумя доченими элементами типа node2, то listview не обновляется. Уже чего только не пробовал... Не понимаю причин столь выборочного обновления - обновлятся только тогда, когда я переключаюсь между категориями с разным количеством элементов. Если чего не ясно - спрашивайте, формулировка у меня расплывчатая получилась... Название: [qt4.3.0] Проблема с моделью на основе QAbstractTableModel Отправлено: SABROG от Июль 23, 2007, 17:20 Наверно косяк где-то в nodeFromIndex
Название: [qt4.3.0] Проблема с моделью на основе QAbstractTableModel Отправлено: Icoz от Июль 23, 2007, 18:40 Код: node2* Model2::nodeFromIndex(const QModelIndex &index) const добавлено спустя 7 минут: Цитата: "SABROG" Наверно косяк где-то в nodeFromIndex Да нет! Проблема в том, что on_treeview_clicked не всегда вызывается!!! Я жму мышой по элементу, у меня стоит брейкпоинт на функции, но он не каждый раз выскакивает! То есть сама эта функция не каждый раз вызывается. Хотя если и косяк, то в setNewData. Но эта функция вызывается реже чем должна. И еще, я в доке прочитал, что сигнал clicked посылается только, если index.isValid() == true! То есть не каждое мое нажатие мышкой можно описать валидным индексом? добавлено спустя 5 минут: Оп-па! Попробовал в винде - все нормально! Обрабатывается КАЖДЫЙ клик! Значит глюк связан только с линой! Никто не знает, в багах это не числится? PS. Сей глюк наблюдал в openSuse 10.2 [qt4.2.1] и Kubuntu 7.04 [qt4.3.0] В винде qt4.3.0 - глюка нет Название: Re: [qt4.3.0] Проблема с моделью на основе QAbstractTableModel Отправлено: Icoz от Сентябрь 17, 2007, 23:15 Проблема решена:
Код: connect( treeview->selectionModel(), SIGNAL( currentChanged(const QModelIndex &,const QModelIndex &) ), this, SLOT( on_treeview_currentChanged(const QModelIndex &,const QModelIndex &) ) ); |