QTableWidget::section:first 在只有一列存在时不起作用

问题描述 投票:0回答:1

我尝试创建一个表格标题,它将具有简约的设计。 为此,我隐藏了标题中每个项目的所有边框,除了底部边框和左边框。为了避免第一部分左边框与表格边框堆叠,我添加了

QTableWidget::section:first
设置。这是代码:

QTableWidget::item {
    border: none;
    padding-left: 5px;
    padding-right: 5px;
}
QTableView {
    border: 2px solid #CCCCCC;
    border-radius: 7px;
    color: #3B3B3B;
    background: transparent;
    selection-background-color: #D3E3ED;
    selection-color: #3B3B3B;
    margin: 1px;
    alternate-background-color: #EBEBEB
}
QHeaderView {
    font-family:'Segoe UI'; 
    font-size:12pt bold; 
    background: #EBEBEB;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
}

QHeaderView::section {
    font-weight: bold; 
    border: none;
    background: transparent;
    padding: 2px;
    padding-left: 7px;
    padding-right: 7px;
    border-bottom: 1px solid #CCCCCC;
    border-left: 1px solid #CCCCCC;
}
QHeaderView::section:first{
    border-left: 0px;
}

QTableView::corner { 
    background-color: transparent; 
}

一切正常,除了表中只有一列的情况(应该是表中的第一列、最后一列和唯一一列)。然后,看起来

section:first
停止工作,并且该部分出现左边框。

但是,当我添加两列或更多列时,所有列都会再次正常化。

这种行为的根源是什么?

是否可以使用纯 CSS 来修复此行为,而无需每次列数更改时在代码中调用 setStyleSheet?

python css python-3.x pyqt pyside
1个回答
0
投票

first
的假设是它也是许多中的第一个,但你只有一个部分。

正如QSS参考中关于QHeaderView的解释,

:section
子控件还支持
only-one
伪状态,因此您需要为both状态指定规则。

QHeaderView::section:first, QHeaderView::section:only-one {
    border-left: 0px;
}
© www.soinside.com 2019 - 2024. All rights reserved.