你可以通过重写resizeEvent
方法来实现基于单行而不使用resizeColumnsToContents
调整QTableWidget
列的大小。下面是一个使用PyQt5的代码示例:
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
class CustomTableWidget(QTableWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setColumnCount(3)
self.setHorizontalHeaderLabels(['Column 1', 'Column 2', 'Column 3'])
self.resizeRowsToContents()
self.setItem(0, 0, QTableWidgetItem('Item 1'))
self.setItem(0, 1, QTableWidgetItem('Longer Item 2'))
self.setItem(0, 2, QTableWidgetItem('Item 3'))
def resizeEvent(self, event):
width = event.size().width()
column_count = self.columnCount()
if column_count > 0:
column_width = width / column_count
for column in range(column_count):
self.setColumnWidth(column, column_width)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Resizable Table Widget')
table_widget = CustomTableWidget(self)
self.setCentralWidget(table_widget)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
在上面的代码中,我们定义了一个名为CustomTableWidget
的自定义QTableWidget
类。我们重写了resizeEvent
方法,并在该方法中计算出每列的宽度,然后将其应用于表格。这样,每次调整窗口大小时,所有列都会按比例调整其大小,以适应窗口的宽度。
在MainWindow
类中,我们创建了一个窗口,并将CustomTableWidget
实例设置为窗口的中央部件。当我们运行这段代码时,我们会看到每列的大小会根据窗口的大小进行调整。