我试图以特定的方式自定义QTableWidget,但我并不完全确定如何去做。我希望QTableWidget在展开时根据以下规则进行扩展:
setResizeMode
(QHeaderView.Stretch)
向后缩小表格应遵循相反的规则。
我已尝试覆盖QTableWidget的resizeEvent,但这似乎不起作用,尤其是在使用setResizeMode
和setStretchLastSection
时。我是否必须更新QHeaderView?我如何实现这一目标?
我有一个课程,我试图实现这一点。它可以工作,但只有在表格大小更新后才能使用。显示表格大小的过程,我必须自己更新大小,让它重新应用我想要的大小调整属性。
class DataTable(QTableWidget):
def __init__(self, data, header):
# Call the super class method
super().__init__(6,4) # Make if 6 rows by 4 columns for this example
# Put the data in the table
# Removed from MWE
# Configure the table properties
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.horizontalHeader().setResizeMode(QHeaderView.Stretch)
#self.horizontalHeader().setStretchLastSection(True)
self.resizeColumnsToContents()
self.resizeRowsToContents()
self.setMinimumWidth(self.horizontalHeader().length()+self.verticalHeader().width())#, self.verticalHeader().length() + self.horizontalHeader().height())
def resizeEvent(self, event):
if self.columnWidth(3) > 100: # 3 is the last column in this MWE
for i in range(3):
self.horizontalHeader().setResizeMode(i,QHeaderView.Fixed)
self.horizontalHeader().setResizeMode(3,QHeaderView.Stretch)
else:
for i in range(3):
self.horizontalHeader().setResizeMode(i,QHeaderView.Stretch)
self.horizontalHeader().setResizeMode(3,QHeaderView.Stretch)
super().resizeEvent(event)