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

12

我想在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;
}

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


默认情况下,表格会显示所有的边框分隔开,这样您将得到2个像素的边框而不是一个。您可以尝试在QWidget中添加border-collapse: collapse;来解决问题。 - Caelea
2个回答

11

关键在于在 QHeaderView::section 中使用 border-style: none;,之后 border-leftborder-rightborder-topborder-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;
}

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

http://pastebin.com/svReqHr3

如何在标题中绘制正确的CSS边框?


这不是一个解决方案,但感谢提供的链接。有一个技巧是使用 border-style: none;,然后 border-left 开始起作用。 - j123b567

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接