更改QTableView中的默认行大小

时间:2014-12-18 16:59:01

标签: python qt pyside qtableview

如何更改QTableView中的默认行大小以使其更小?我可以调用resizeRowsToContents(),但随后的插入仍会在末尾添加新行,这是默认大小。

我猜它可能与样式表有关,但我对影响视觉变化的东西不够熟悉。

我在Python中使用PySide,但我认为这是一个普遍的Qt问题。


示例视图:

默认表格外观

enter image description here

resizeRowsToContents()之后表格的内容:

enter image description here

现在如果我在最后添加一个新的空白行:

enter image description here

Darn,它使用默认的行高,以及所有额外的空间。

1 个答案:

答案 0 :(得分:8)

Qt::SizeHintRole负责细胞的宽度和高度。所以你可以:

someModel.setData(someIndex,QSize(width, height), Qt::SizeHintRole);

或者只是这个:

someView.verticalHeader().setDefaultSectionSize(10);

我认为setDefaultSectionSize正是您所寻找的。 AFAIK没有其他简单的方法。

From doc:

  

defaultSectionSize:int

     

此属性保留之前标题部分的默认大小   大小调整。此属性仅影响具有Interactive的节   或修正为调整大小模式。

如果你不知道你需要多少像素,那么在用resizeRowsToContents()

应用rowHeight()后尝试获得这个高度

所以它应该是这样的:

resizeRowsToContents();
someView.verticalHeader().setDefaultSectionSize(someView.rowHeight(0));