Python-QTableWidget:单击标题中的排序时如何捕获信号

Ale*_*dar 1 python signal-handling pyqt4 qtablewidget

在用我用于self.ui.tableWidget.resizeRowToContents每一行的一些文本填充 tableWidget 时。之后 and: self.ui.tableWidget.setSortingEnabled(1),sorting 按预期工作,但行不再根据内容调整大小,实际上它们保留了以前的高度。

name                              name v                 name v
---------                         ---------              ---------
text2                             text1line1             text1line1
---------  after sort is clicked: ---------   expected:  text1line2
text1line1                                               text1line3
text1line2                        text2                  ---------
text1line3                                               text2
---------                         ---------              ---------
Run Code Online (Sandbox Code Playgroud)

我的想法是在单击标题中的排序时捕获信号,然后再次self.ui.tableWidget.resizeRowToContents 遍历所有行。 如何捕捉该信号?

ekh*_*oro 5

无需resizeRowToContents为添加的每一行调用。

相反,在表格填满后,调用resizeRowsToContents插槽,它将一次调整所有行的大小。

然后,您可以将同一插槽连接到sortIndicatorChanged信号,以便在对列进行排序时调整行的大小:

# ... fill table, then:
self.ui.tableWidget.setSortingEnabled(True)
self.ui.tableWidget.resizeRowsToContents()
self.ui.tableWidget.horizontalHeader().sortIndicatorChanged.connect(
    self.ui.tableWidget.resizeRowsToContents)
Run Code Online (Sandbox Code Playgroud)