Свернуть и развернуть столбцы таблицы
Реализую модель таблицы, которая может сворачивать и разворачивать столбцы. За это отвечает роль SubtableRoleDeploy. В свернутом состоянии заголовок и данные отличаются чем в развернутом.
Ниже пример кода. В нем я использую пересекающиеся begin/end вставки и удаления колонок. Тут написано, что вложенные(возможно и пересекающиеся) нельзя использовать. Это правильная реализация?
bool VectorModel::setHeaderDataHorizontal(int section, const QVariant &value, int role) {
switch (role) {
case SubtableRoleDeploy:
if (value.toBool()) {
Q_ASSERT(bus && !bus->deploy());
beginRemoveColumns(index(0, section).parent(), section, section);
beginInsertColumns(index(0, section).parent(), section, section + bus->pinsCount());
bus->setDeploy(true);
endRemoveColumns();
endInsertColumns();
} else {
Q_ASSERT(pin && pin->parentConst() && pin->parentConst()->deploy());
int busStart = section - pin->indexOfParent();
int busEnd = busStart + pin->parentConst()->pinsCount();
beginRemoveColumns(index(0, section).parent(), busStart, busEnd);
beginInsertColumns(index(0, section).parent(), busStart, busStart);
pin->parent()->setDeploy(false);
endRemoveColumns();
endInsertColumns();
}
return true;
/*somecode*/
}
}
Так же есть мысли использовать changeData. Если так, я боюсь что заголовок автоматически не изменится.
