效果如下:
首先是用QSS来设置,把能做的都做了,设置branch和item的上下边框,最后一个item的右边框,如下:
QTreeWidget::item:selected{
border-top:1px solid #8d8d8d;
border-bottom:1px solid #8d8d8d;
}
QTreeWidget::item:last:selected{
border-right:1px solid #8d8d8d;
}
QTreeWidget::branch:selected{
border-top:1px solid #8d8d8d;
border-bottom:1px solid #8d8d8d;
}
然后设置branch的左边框,在paintEvent里重绘:
void TreeWidget::paintEvent(QPaintEvent* e)
{
QTreeWidget::paintEvent(e);
if(selectedItems().size() > 0)
{
auto r = visualItemRect(selectedItems().at(0));
QPainter painter(viewport());
painter.drawLine(0, r.top(), 0, r.bottom());
}
}