我有一个简单的QTableView,我基本上想模拟这个:
view.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
但是,我实际上不能使用它,因为这会在每一行上调用sizeHint
,这在我的情况下是不可接受的,因为小部件需要在启动时响应,并且所有行的计算都需要很长时间。因此,这不是一个选项。
我知道单列的大小,它总是相同的,并且总是高度最大的一列。但是,此单元格的宽度可能并不总是一行中所有单元格中最宽的。通过这样做,我使这些单元格的大小正确,但这显然使所有单元格的大小相同,而且许多单元格现在太宽了。
view.horizontalHeader().setDefaultSectionSize(200)
view.verticalHeader().setDefaultSectionSize(100)
我也尝试设置单个列宽,但这似乎对宽度根本没有影响,如下所示:
view.setColumnWidth(0, 5)
此外,设置单个列宽并不是那么好,因为我无法提前知道它们的宽度。
有没有办法使用(或模拟(ResizeToContents
方法(如上所示(,但以一种不需要检查所有单元格大小的方式?
您是否尝试过使用setResizeContentsPrecision
优化ResizeToContents
模式?
设置使用 ResizeToContent 时 QHeaderView 计算大小的精度。较低的值将提供不太准确但快速的自动调整大小,而较高的值将提供更准确的调整大小,但可能会很慢。
数字精度指定在计算首选尺寸时应考虑的截面数。
默认值为 1000,这意味着在执行自动调整大小时,具有自动调整大小的水平列在计算时最多查看 1000 行。
特殊值 0 表示它将仅查看可见区域。特殊值 -1 意味着查看所有元素。