- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个具有 QTableWidget 的 PyQt 应用程序,它可以潜在地用于显示大量行。我希望每个列的宽度将由整个列的最大元素宽度来定义,而不仅仅是由以编程方式将单元格数据添加到表格小部件时显示的最大元素来定义。
Qt docs在 resizeColumnToContents() 方法描述中指出
Only visible columns will be resized.Reimplement sizeHintForColumn() toresize hidden columns as well.
问题是,我到底应该如何正确地做到这一点?不幸的是,我在 PyQt 方面没有真正的经验,并且我无法找到此方法的任何来源来为我提供有关如何执行此操作的任何线索。
是否可以根据在任何给定时刻显示的当前内容来调整大小,即在表格小部件收到任何paintEvents之后调整大小?
最佳答案
您只需继承 QTableWidget 并重写 sizeHintForColumn 方法,返回一个描述所需宽度(以像素为单位)的整数。您可以使用QFontMetrics的width
方法来计算宽度。在最长的字符串上。
class MyTable(QtGui.QTableWidget):
def sizeHintForColumn(self, column):
fm = self.fontMetrics()
max_width = 0
for i in range(self.rowCount()):
width = fm.width(self.item(i,column).text()) + 10
if width > max_width:
max_width = width
return max_width
如果您要添加大量元素并随后调用 resizeColumnToContents
,您可能希望以某种方式存储结果。这样您就不必每次都循环遍历所有行。
关于pyqt - 在 QTableView 中的所有单元格(不仅显示)上重新实现 sizeHintForColumn() 到 resizeColumnsToContents(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415343/
我正在开发一个具有 QTableWidget 的 PyQt 应用程序,它可以潜在地用于显示大量行。我希望每个列的宽度将由整个列的最大元素宽度来定义,而不仅仅是由以编程方式将单元格数据添加到表格小部件时
我是一名优秀的程序员,十分优秀!