QTreeWidget选择第一个分支

时间:2018-02-01 19:01:35

标签: qt qtstylesheets

如何在QTreeWidget / QTreeView中选择第一个分支?

我需要在整行上绘制边框,包括项目和分支。我尝试使用QSS代码来定义悬停样式:

TreeWidget::item:hover {
    border-top: 1px solid #8C8C8C;
    border-bottom: 1px solid #8C8C8C;
}

TreeWidget::item:last:hover {
    border-right: 1px solid #8C8C8C;
}

TreeWidget::branch:hover {
    border-top: 1px solid #8C8C8C;
    border-bottom: 1px solid #8C8C8C;
    border-left: 1px solid #8C8C8C;
}

这仅适用于具有一个分支元素的项目:

enter image description here

但是会为任何子项添加额外的垂直线:

enter image description here

如何仅为第一个分支项目绘制左边框?像这样的东西(但这个不起作用):

TreeWidget::branch:first:hover {
    border-left: 1px solid #8C8C8C;
}

UPD1:

我没有找到从qss获得第一个分支的方法,但我找到了一个只添加左垂直线的解决方案。这可以从paintEvent

完成
void TreeWidget::paintEvent(QPaintEvent* event)
{
    QTreeWidget::paintEvent(event);

    QPainter painter(viewport());
    auto r = visualItemRect(itemAt(mapFromGlobal(QCursor::pos())));
    painter.drawLine(0, r.top(), 0, r.bottom());

}

0 个答案:

没有答案