Написана своя модель и делегат для QTreeView.
Модель расчитана для работы со строками разного размера.
Размер строки динамический. Та строка, которая в данный момент выделена (если она одна) имеет размер больше, чем другие. Т.е. отображается какая-то расширенная информация.
Изменение размера делается в лоб: Код
// slot на изменения размера
void MyView::selectChanged(const QItemSelection& a_first,const QItemSelection& a_second)
{
bool t_needReset = false;
int t_wasSelected = a_first.count();
int t_isSelected = a_second.count();
if( 1 == t_wasSelected || 1 == t_isSelected )
t_needReset = true;
if( t_needReset )
reset();
}
Если я двигаюсь по дереву с помощью клавиатуры, или нет поддеревьев (т.е. просто список, без узлов) то всё работает отлично. Но если кликать мышой, то работает некорректно. Поддерево закрывается, потом открывается и выделение снимается. В дебаге посмотрел, вы время клика мышью сигнал selectionChanged дергается 2 раза, а если "хожу" по дереву клавиатурой - 1 раз.
В общем, такая вот проблемка нарисовалась. Если кто знает решение или знает, как это реализовать более элегантно, жду советов