英文:
QTableWidget Expand Columns to Fill With Last Column Fixed Width
问题
我正在尝试一些我认为会很简单的事情,但却找不到实现方法。
提供的图像展示了我想要的效果。它基本上只是一个带有以下行为的QTableWidget:
- 填充可用空间。
- 右侧有一个固定宽度的列。
- 我希望其余的列可以手动调整大小(这样它们就必须按比例拉伸以填满所有空间)。
我尝试过的方法:
- 设置setStretchLastSection(True)。这会填满空间,但如果设置了这个选项,你就无法控制其宽度。
- 重写resizeEvent并手动计算和设置所有内容。这似乎是一种非常混乱的做法,通常意味着有一种更简单的方法。
有没有简单的方法可以实现这个目标?
英文:
I'm attempting something that I thought would be simple, but just cannot find a way to do this.
The supplied image demonstrates what I'm after. It's essentially just a QTableWidget with the following behaviour:
- Fill the available space.
- A fixed width column on the right.
- The rest of the columns I'd like to be able to resize manually (so they'd have to stretch proportionally so that all space is filled).
Things I have tried:
- Setting setStretchLastSection(True). This fills up the space, but you have no control over its width if this is set.
- Overriding the resizeEvent and calculating and setting everything manually. This seems like a very messy way of doing things, which usually means there's a simpler way.
Is there a simple way of achieving this?
答案1
得分: 0
你可以始终使用 self.my_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
来将所有列调整为内容大小,然后将固定宽度应用于最后一列。
英文:
You can always ResizeToContents
all columns with self.my_table.verticalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
and then apply your fixed width to the last one
答案2
得分: 0
我成功地得到了一些有效的内容
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
。
英文:
I managed to get something that works
self.myTable.horizontalHeader().setSectionResizeMode(0, QtWidgets.QHeaderView.Interactive)
self.myTable.horizontalHeader().setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
self.myTable.horizontalHeader().setSectionResizeMode(2, QtWidgets.QHeaderView.Fixed)
The general rule is to set all of the headers to Interactive
, the penultimate to Stretch
, and final to Fixed
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论