QTableWidget 扩展列以填充最后一列固定宽度
Posted
技术标签:
【中文标题】QTableWidget 扩展列以填充最后一列固定宽度【英文标题】:QTableWidget Expand Columns to Fill With Last Column Fixed Width 【发布时间】:2020-01-03 15:49:17 【问题描述】:我正在尝试一些我认为很简单的事情,但就是找不到方法来做到这一点。 提供的图像展示了我所追求的。它本质上只是一个具有以下行为的 QTableWidget:
填满可用空间。 右侧有一个固定宽度列。 我希望能够手动调整其余列的大小(因此它们必须按比例拉伸以填充所有空间)。我尝试过的事情:
设置 setStretchLastSection(True)。这会填满空间,但如果设置了它,您将无法控制其宽度。 覆盖 resizeEvent 并手动计算和设置所有内容。这似乎是一种非常混乱的做事方式,这通常意味着有一种更简单的方式。有没有一种简单的方法可以做到这一点?
【问题讨论】:
【参考方案1】:您始终可以使用self.my_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
ResizeToContents
所有列,然后将固定宽度应用于最后一列
【讨论】:
从文档here 中可以看到,设置QHeaderView.ResizeToContents
表示“用户无法更改大小或以编程方式更改大小。”【参考方案2】:
我设法得到了一些有用的东西
self.myTable.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Interactive)
self.myTable.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
self.myTable.horizontalHeader().setSectionResizeMode(2, QtWidgets.QHeaderView.Fixed)
一般规则是将所有标题设置为Interactive
,倒数第二个设置为Stretch
,最后一个设置为Fixed
。
【讨论】:
以上是关于QTableWidget 扩展列以填充最后一列固定宽度的主要内容,如果未能解决你的问题,请参考以下文章
QTableView / QTableWidget:使用 Qt 设计器拉伸最后一列