我尝试创建一个表格标题,它将具有简约的设计。 为此,我隐藏了标题中每个项目的所有边框,除了底部边框和左边框。为了避免第一部分左边框与表格边框堆叠,我添加了
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?
first
的假设是它也是许多中的第一个,但你只有一个部分。
正如QSS参考中关于QHeaderView的解释,
:section
子控件还支持only-one
伪状态,因此您需要为both状态指定规则。
QHeaderView::section:first, QHeaderView::section:only-one {
border-left: 0px;
}