QTableWidget 扩展列以填充最后一列固定宽度
QTableWidget Expand Columns to Fill With Last Column Fixed Width
我正在尝试一些我认为很简单的事情,但就是找不到方法来做到这一点。
提供的图像展示了我所追求的。它本质上只是一个具有以下行为的 QTableWidget:
- 填写可用space.
- 右侧固定宽度列。
- 我希望能够手动调整其余列的大小(因此它们必须按比例拉伸,以便填充所有 space)。
我尝试过的事情:
- 设置 setStretchLastSection(True)。这会填满 space,但如果已设置,您将无法控制其宽度。
- 覆盖 resizeEvent 并手动计算和设置所有内容。这似乎是一种非常混乱的做事方式,这通常意味着有一种更简单的方法。
有没有简单的方法可以做到这一点?
您始终可以 ResizeToContents
所有带有 self.my_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
的列,然后将您的固定宽度应用于最后一列
我设法找到了有用的东西
self.myTable.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Interactive)
self.myTable.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
self.myTable.horizontalHeader().setSectionResizeMode(2, QtWidgets.QHeaderView.Fixed)
一般规则是将所有的headers设置为Interactive
,倒数第二个设置为Stretch
,最后一个设置为Fixed
。
我正在尝试一些我认为很简单的事情,但就是找不到方法来做到这一点。 提供的图像展示了我所追求的。它本质上只是一个具有以下行为的 QTableWidget:
- 填写可用space.
- 右侧固定宽度列。
- 我希望能够手动调整其余列的大小(因此它们必须按比例拉伸,以便填充所有 space)。
我尝试过的事情:
- 设置 setStretchLastSection(True)。这会填满 space,但如果已设置,您将无法控制其宽度。
- 覆盖 resizeEvent 并手动计算和设置所有内容。这似乎是一种非常混乱的做事方式,这通常意味着有一种更简单的方法。
有没有简单的方法可以做到这一点?
您始终可以 ResizeToContents
所有带有 self.my_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
的列,然后将您的固定宽度应用于最后一列
我设法找到了有用的东西
self.myTable.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Interactive)
self.myTable.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
self.myTable.horizontalHeader().setSectionResizeMode(2, QtWidgets.QHeaderView.Fixed)
一般规则是将所有的headers设置为Interactive
,倒数第二个设置为Stretch
,最后一个设置为Fixed
。