如何通过CSS设置QTableView单元格的填充?

13

有没有办法定义QTableView单元格的填充?我希望可以使用CSS样式表来实现,但是文档中没有描述如何实现的方法。

以下样式表不能达到预期效果:

QTableView {
  padding: 5px;
}

由于它影响的是小部件整体的填充属性,而不是单个单元格的填充属性。

2个回答

18

我成功地使用::item子控件指定符使其正常工作,如下所示:

QTableView::item
{
  border: 0px;
  padding: 5px;
}

请注意,设置边框属性是必要的才能使之起作用。而且,这种方法并不是非常理想,因为它似乎只影响了QTableView单元格的左右填充。不过目前我可以接受这种方式。


2
有人知道为什么需要 'border: 0px;' 才能使这个工作吗? - Krsna
3
Qt样式表参考页面中关于QTableView的注释:警告:如果你只在QTableCornerButton上设置了一个background-color,除非你将border属性设置为某个值,否则背景可能不会显示。这是因为默认情况下,QTableCornerButton绘制一个本地边框,它完全覆盖了background-color。这里对于padding可能存在相同的要求。 - Jesse Stimpson
2
对我来说不起作用。每次我点击另一个单元格时,文本会变得不可见,因为一个白色矩形被画在上面。 - Trilarion
1
对我来说,如果我将边框设置为0px,则选择单元格文本也会被清除。但是,使用pyqt只设置填充似乎可以正常工作。 - Taran

8

我知道这是一个老问题,但最近我一直在苦苦挣扎。

我发现通过设置

tableView->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

您在CSS中设置的填充将同样应用于单元格的顶部和底部!


2
请注意,此答案适用于Qt 5.0版本,不适用于4.x版本。 - Frodon

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