В общем хочу сделать следующее: есть treeview с категориями данных(там название, еще кое-что), есть сами данные для listview - соответственно пишу 2 разных модели.
Пишу модель по следующей схеме:
class Node1 { //категории данных
...
List<Node1*> list1; // участвует в построении дерева
List<Node2*> list2; // просто данные для данного элемента - потом пойдут в listview (в model2)
}
struct Node2{...} // сами данные
Есть 2 модели:
Model1 : public QAbstractItemModel - к ней претензий нет, идет в treeview
{Node1* rootnode;}
Model2 : public QAbstractTableModel - с ней проблема, для listview
{QList<node2*> data;
void setNewData(QList<node2*> new_data);}
По клику на TreeView вызывается метод модели2 для смены данных согласно выбранной категории:
вызов(который почему-то не всегда вызывается!):
void CMainWindow::on_treeview_clicked(const QModelIndex &index){
Node1* node = model1->nodeFromIndex(index);
if (node)
model2->setNewData(node->list2);
}
реализация:
void Model2::setNewData(QList<node2 *> new_data)
{
// вариант 1 - не работает, как надо
this->disks.clear();
this->disks << new_disks;
// вариант 2 - не работает, как надо
this->disks = new_disks;
// общая часть
reset();
}
Теперь сама проблема: Когда нажимаю мышкой на элемент treeview, в котором находятся 2 элемента, обновляется listview - все ок. Затем выбираю другой элемент с дочерними 3-мя элементами - тоже ок.
А если переключаться с категории с 2-мя на категорию опять же с двумя доченими элементами типа node2, то listview не обновляется. Уже чего только не пробовал... Не понимаю причин столь выборочного обновления - обновлятся только тогда, когда я переключаюсь между категориями с разным количеством элементов.
Если чего не ясно - спрашивайте, формулировка у меня расплывчатая получилась...