Ещё раз выражаю огромную благодарность
Zmeishe
http://www.prog.org.ru/topic_6637_15.htmlОтвет #25 : Апрель 05, 2008, 08:40
Не нашёл способа на форуме сделать это лично, да и времени прошло... Надеюсь он вырос в нашей среде.
И дай Бог ему здоровья.
Подведу небольшие итоги.
Итак, QHeaderItemView не подхватывает от QStandardItemModel вложенные заголовки,
поэтому лишние столбцы нужно добавлять вручную.
Переопределяемая QHeaderItemView::paintSection(...) const не позволяет внутри себя вызывать слоты базового класса
для перерисовки объединенных ячеек. Для реализации необходимого был введен константный сигнал
signals:
void drawSection(int Idx) const;
который я связал с нужным слотом
connect(this,SIGNAL(drawSection(int)),this,SLOT(updateSection(int)));
Работает. Хотя, намеренно последовательно излагал свои шаги, чтобы уберечься от "костылей"
Последние штрихи связаны с текущим уровнем новичка, который на Ваших глазах подрос
Новичок мотивирован на получение знаний и летает с удовольствием на c++ и Qt
Прилагаю финальный архив.
Сейчас занимаюсь абстрагированием изученного кода, чтобы реализовать многоуровневую вложенность заголовков.
Как писал стратег Zmeishe(с)
"
Далее создаём функцию
QVariant headerData(int Section, Qt::Orientation orientation, int nRole) const;
Вообще это функция Модели её там надо было перекрывать, но я сделал здесь, т.к. уже написал, что не принял оконч. решения где им быть.
Для работы headerData понадобятся две рекурсивные функции, которые по int Section будут возвращать номер начальной секции группы (ветки) в которую входит Section и номер конечной секции группы.
"
Некоторое время, пока код не начал обрастать корпоративными особенностями, готов им делиться