QTableWidget扩展列以填充,最后一列固定宽度

huangapple go评论75阅读模式
英文:

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?

QTableWidget扩展列以填充,最后一列固定宽度

答案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.

huangapple
  • 本文由 发表于 2020年1月3日 23:49:17
  • 转载请务必保留本文链接:https://go.coder-hub.com/59581471.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定