PyQt设置列宽

时间:2017-07-07 19:18:06

标签: python qt pyqt qt5 pyqt5

我有一个简单的QTableView,我基本上想模仿这个:

view.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)

但是,我实际上无法使用它,因为这会在每一行上调用sizeHint,这在我的情况下是不可接受的,因为小部件需要在启动时响应并且计算需要很长时间才能完成所有行。因此,这不是一种选择。

我知道单个列的大小,它始终是相同的,并且始终是具有最大高度的列。但是,此单元格的宽度可能并不总是一行中所有单元格中最宽的。我通过这样做使这些细胞的大小正确,但这显然使所有细胞大小相同,而且现在很多细胞都太宽了。

view.horizontalHeader().setDefaultSectionSize(200)
view.verticalHeader().setDefaultSectionSize(100)

我还试图设置单独的列宽,但这似乎对宽度没有任何影响,如下所示:

view.setColumnWidth(0, 5)

另外,设置单独的列宽并不是很好,因为我事先无法知道它们的宽度。

有没有办法使用(或模仿)ResizeToContents方法(如上所示),但是以某种方式不需要检查所有单元格大小?

1 个答案:

答案 0 :(得分:2)

您是否尝试使用setResizeContentsPrecision优化ResizeToContents模式?

  

设置使用ResizeToContents时QHeaderView应如何精确计算大小。较低的值将提供较不准确但快速的自动调整大小,而较高的值将提供更准确的调整大小,但是可能很慢。

     

数字精度指定在计算首选大小时应考虑的部分数。

     

默认值为1000意味着自动调整大小的水平列在执行自动调整大小时计算最多1000行。

     

特殊值0表示仅查看可见区域。特殊值-1意味着要查看所有元素。