PyQt 设置列宽



我有一个简单的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 意味着查看所有元素。

相关内容

  • 没有找到相关文章

最新更新