在我使用PyQt5创建一个标准表格时,遇到了一个问题。以下是初始代码,它能正常工作,点击表头时会选中整列:
from PyQt5 import QtWidgets
app = QtWidgets.QApplication([])
table = QtWidgets.QTableWidget(3, 3)
table.setHorizontalHeaderLabels(['1', '2', '3'])
table.show()
app.exec_()
然而,当我尝试显式地为表格设置QtWidgets.QHeaderView
时,发现丢失了一些默认功能。具体来说,点击表头不再自动选中整列:
from PyQt5 import QtWidgets, QtCore
class CustomTableWidget(QtWidgets.QTableWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setHorizontalHeader(QtWidgets.QHeaderView(QtCore.Qt.Horizontal))
app = QtWidgets.QApplication([])
table = CustomTableWidget(3, 3)
table.setHorizontalHeaderLabels(['1', '2', '3'])
table.show()
app.exec_()
我尝试了不同的方法来恢复默认行为,比如改变QHeaderView
的父类到表格本身,或是尝试子类化QHeaderView
,但都没有成功恢复到原来那样自动选中列的效果。我不希望从零开始重新实现所有默认行为,因为那将是一项繁琐且不必要的工作。