Python 更改QTableView中的默认行大小
如何更改QTableView中的默认行大小,使其更小?我可以调用resizeRowsToContents(),但随后的插入仍然会在末尾添加默认大小的新行 我猜这可能与样式表有关,但我对影响视觉变化的因素不太熟悉 我在Python中使用PySide,但我认为这是一个一般性的问题Python 更改QTableView中的默认行大小,python,qt,pyside,qtableview,Python,Qt,Pyside,Qtableview,如何更改QTableView中的默认行大小,使其更小?我可以调用resizeRowsToContents(),但随后的插入仍然会在末尾添加默认大小的新行 我猜这可能与样式表有关,但我对影响视觉变化的因素不太熟悉 我在Python中使用PySide,但我认为这是一个一般性的问题 示例视图: 默认表外观 resizeRowsToContents()之后的表的外观 现在,如果我在末尾添加一个新的空行: 该死的,它使用默认的行高和所有额外的空间。Qt::SizeHintRole负责单元格的宽度和
示例视图: 默认表外观
resizeRowsToContents()之后的表的外观
现在,如果我在末尾添加一个新的空行:
该死的,它使用默认的行高和所有额外的空间。Qt::SizeHintRole
负责单元格的宽度和高度。所以你可以:
someModel.setData(someIndex,QSize(width, height), Qt::SizeHintRole);
或者仅仅是这样:
someView.verticalHeader().setDefaultSectionSize(10);
我认为setDefaultSectionSize
正是您想要的。恐怕没有其他简单的方法了
defaultSectionSize:int
此属性保存之前标题部分的默认大小
调整大小。此属性仅影响具有交互特性的节
或固定为其调整大小模式
如果不知道需要多少像素,请在应用resizeRowsToContents()
和rowhight()
所以应该是这样的:
resizeRowsToContents();
someView.verticalHeader().setDefaultSectionSize(someView.rowHeight(0));
六羟甲基三聚氰胺六甲醚。。。但我不知道像素的数量。我只想让QTableView显示数据,而不需要额外的空间。@JasonS在我看到你的截图后,行高是相同的,所以我编辑了我的答案,如果数据不是很复杂,它应该可以工作。tableView.verticalHeader().setResizeMode(QHeaderView.ResizeToContents)
似乎工作得很好,但它是动态的,当我进行大量实时更新时,它会减慢我的应用程序。我真的只想得到标准的行大小-(当您不根据内容调整大小时,“标准”行高度是您得到的。它基于行的大小提示,该提示源自项委托的大小提示(除其他外)。如果您不喜欢该特定高度,只需将其更改为更可接受的高度(例如table.fontMetrics().height()+6
)。不知何故,我看不出第二张图像和第三张图像之间有什么大的区别。如果有人被Jason的评论难住了,请看最后一行(在“toves”下面):所讨论的方法是setSectionResizeMode
,而不是setResizeMode
。