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

Posted

技术标签:

【中文标题】QTableView/QTableWidget 网格样式表 - 网格线宽【英文标题】:QTableView/QTableWidget grid stylesheet - grid line width 【发布时间】:2014-10-02 13:54:28 【问题描述】:

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

问题是,很难设置QHeaderView 的样式。一直以来,我得到 2px 网格宽度或根本没有网格。

我有一个 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 版。

【问题讨论】:

默认情况下,表格显示所有边框分开,所以你会得到 2px 的边框而不是一个。您可以尝试为 QWidget 添加 css border-collapse: collapse; 【参考方案1】:

诀窍是在女巫border-leftborder-rightborder-topborder-bottom 开始工作之后,在QHeaderView::section 中的border-style: none;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;

【讨论】:

【参考方案2】:

我认为你所做的是为部分单元格添加了额外的边框,部分属性应该是这样的(虽然我没有尝试这个解决方案)

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

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

http://pastebin.com/svReqHr3

HowTo draw correct CSS border in header?

【讨论】:

这不是一个解决方案,但感谢您的链接。在女巫border-left 开始工作后,border-style: none; 出现了一个技巧。

以上是关于QTableView/QTableWidget 网格样式表 - 网格线宽的主要内容,如果未能解决你的问题,请参考以下文章

QTableView/QTableWidget 中的类似 Ktorrent 的小部件

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

在 QTableView/QTableWidget 中:如何使交替行完全垂直填充表格?

qt QTableView/QTableWidget样式设置

Qt QTableWidget的用法

内网穿透:外网轻松访问内网应用