void CDataHeaderView::paintSection(QPainter* pPainter,const QRect& rect,int logicalIndex) const{ QStandardItem* pItem=m_headerModel.item(0,logicalIndex); QVariant data=pItem->data(); QRect rc=rect; if(!data.isNull())//пока вот так ловлю "костыль" { pItem=m_headerModel.item(0,0); rc.setLeft(sectionPosition(0)); rc.setWidth(sectionSize(0)); } //Теперь начинаю разбирать новости int colCount=pItem->columnCount();//ловлю элементы с вложенными колонками if(colCount)//знаю про первую сложную колонку { int w=sectionSize(1);//индекс пока в тупую 1 rc.setWidth(rc.width()+w); rc.setHeight(QHeaderView::sizeHint().height()); QRect rcs=rc; QList<QStandardItem*>cols=pItem->takeRow(0); for(int n=0;n<cols.size();n++) { QStandardItem* pColItem=cols[n]; rcs.setLeft(sectionPosition(n)); rcs.setWidth(sectionSize(n)); rcs.setTop(QHeaderView::sizeHint().height()); rcs.setHeight(QHeaderView::sizeHint().height()); pPainter->drawRect(rcs); QString name=pColItem->text(); pPainter->drawText(rcs,Qt::AlignHCenter|Qt::AlignVCenter,name); } } pPainter->drawRect(rc); pPainter->drawText(rc,Qt::AlignHCenter|Qt::AlignVCenter,pItem->text()); //if(colCount)//знаю про первую сложную колонку //{ //} if(!data.isNull())//пока вот так ловлю "костыль" emit drawSection(0);}