QTableView/QTableWidget网格样式表-网格线宽度

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

我想在Qt中以特定的样式显示表格。我想用相同的颜色和相同的宽度绘制所有网格线。

问题是,很难设计

QHeaderView
。我一直得到 2px 网格宽度或根本没有网格。

我有以下带有一个 QTableWIdget 的窗口

QTableWidget

和相关的样式表

QWidget {
    background-color: #333333;
    color: #fffff8;
}

QHeaderView::section {
    background-color: #646464;
    padding: 4px;
    border: 1px solid #fffff8;
    font-size: 14pt;
}

QTableWidget {
    gridline-color: #fffff8;
    font-size: 12pt;
}

QTableWidget QTableCornerButton::section {
    background-color: #646464;
    border: 1px solid #fffff8;
}

有什么技巧可以让所有网格线的宽度都是 1px 吗?我使用的是 4.8.5,无法升级到版本 5.x。

c++ css qt qt4
2个回答
12
投票

诀窍是女巫border-style: none;

QHeaderView::section
border-left
border-right
开始工作后,
border-top
中的
border-bottom
QHeaderView::section
的正确样式应该是

QHeaderView::section {
    background-color: #646464;
    padding: 4px;
    font-size: 14pt;
    border-style: none;
    border-bottom: 1px solid #fffff8;
    border-right: 1px solid #fffff8;
}

QHeaderView::section:horizontal
{
    border-top: 1px solid #fffff8;
}

QHeaderView::section:vertical
{
    border-left: 1px solid #fffff8;
}

3
投票

我认为您所做的是为部分单元格添加了额外的边框,并且部分属性应该看起来像这样(尽管我没有尝试这个解决方案)。

QHeaderView::section {
    background-color: #646464;
    padding: 4px;
    border: 0px;
    font-size: 14pt;
}

有关如何设置标题样式的更多信息,请参阅:

QTableView#tableWidget QHeaderView::section:horizontal
{
    height: 24px;
 
    border-style: none;
 
    border-left: 1px solid #ecedef;
    border-top: 1px solid #161618;
    border-right: 1px solid #b1b1b5;
    border-bottom: 1px solid #161618;
 
    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
 }
 
/*
QTableView#tableWidget QHeaderView::section:horizontal:first,
QTableView#tableWidget QHeaderView::section:horizontal:last
{
    border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
*/
 
QTableView#tableWidget QHeaderView
{
    /* draw the hole hor top & bottom line for the header */
    height: 24px;
 
    border-top: 1px solid #161618;
    border-bottom: 1px solid #161618;
}
 
QTableView#tableWidget QHeaderView::section:horizontal:first
{
    border-left-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
 
QTableView#tableWidget QHeaderView::section:horizontal:last
{
    border-right-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}
 
QTableView#tableWidget QHeaderView::section:horizontal
{
    /* for each section draw ONLY left & right lines */
    height: 24px;
 
    border-style: none;
 
    border-left: 1px solid #ecedef;
    border-right: 1px solid #b1b1b5;
 
    background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #f4f4f6, stop:1 #ceced6);
}

如何使用样式表绘制正确的标题视图边框

© www.soinside.com 2019 - 2024. All rights reserved.