更改QTableView中的默认行大小

Jas*_*n S 3 python qt qtableview pyside

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

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

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


示例视图:

默认表格外观

在此输入图像描述

表后面的内容resizeRowsToContents()如下:

在此输入图像描述

现在,如果我在末尾添加一个新的空白行:

在此输入图像描述

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

Che*_*byl 9

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

someModel.setData(someIndex,QSize(width, height), Qt::SizeHintRole);
Run Code Online (Sandbox Code Playgroud)

或者就是这样:

someView.verticalHeader().setDefaultSectionSize(10);
Run Code Online (Sandbox Code Playgroud)

而且我认为这setDefaultSectionSize正是你在寻找什么.AFAIK没有其他简单的方法.

来自doc:

defaultSectionSize:int

在调整大小之前,此属性保留标题部分的默认大小.此属性仅影响具有"交互"或"固定"作为其调整大小模式的节.

如果你不知道你需要多少像素,然后尝试运用后能得到这个高度resizeRowsToContents()rowHeight()

所以它应该是这样的:

resizeRowsToContents();
someView.verticalHeader().setDefaultSectionSize(someView.rowHeight(0));
Run Code Online (Sandbox Code Playgroud)