一.效果

二.实现
网格线虽然可以用样式表添加,但效果不好。这里重写QTreeView的drawRow函数来实现网格线的绘制。
void QHTreeView::drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QTreeView::drawRow(painter, option, index);
QPen pen = painter->pen();
pen.setWidth(1);
pen.setColor(Qt::lightGray);
painter->setPen(pen);
int y = option.rect.y();
painter->save();
for (int i = 0; i < header()->count() - 1 ; i++)
{
painter->translate(header()->sectionSize(i) - 0.5, 0);
painter->drawLine(0, y, 0, y + option.rect.height());