Qt Designer直接从Designer中自动拟合tableWidget

时间:2019-04-05 16:16:56

标签: python python-3.x pyqt pyqt5 qt-designer

我正在尝试将type Primitive = string | Function | number | boolean | Symbol | undefined | null type DeepOmitHelper<T, K extends keyof T> = { [P in K]: //extra level of indirection needed to trigger homomorhic behavior T[P] extends infer TP ? // distribute over unions TP extends Primitive ? TP : // leave primitives and functions alone TP extends any[] ? DeepOmitArray<TP, K> : // Array special handling DeepOmit<TP, K> : never } type DeepOmit<T, K> = T extends Primitive ? T : DeepOmitHelper<T,Exclude<keyof T, K>> type DeepOmitArray<T extends any[], K> = { [P in keyof T]: DeepOmit<T[P], K> } type Input = { __typename: string, a: string, nested: { __typename: string, b: string } nestedArray: Array<{ __typename: string, b: string }> nestedTuple: [{ __typename: string, b: string }] } type InputWithoutKey = DeepOmit<Input, '__typename'> let s: InputWithoutKey = { a: "", nested: { b:"" }, nestedArray: [ {b: ""} ], nestedTuple: [ { b: ""}, ] } 列自动适合tableWidget的可用区域

目前,我的布局如下图所示。可以看出,右边没有多余的空白,我想在四列之间均匀地填充。

enter image description here

我不打算将tableWidget设置为horizontalHeaderStretch(如下所示)。这样会不均匀地延伸最后一列。

enter image description here

我尝试将True设置为sizeAdjustPolicy,但看不到明显的差异。

enter image description here

可以找到类似的问题here,但是我没有直接从设计者那里提及如何进行此操作。

关于如何做到这一点的任何建议?预先感谢。

1 个答案:

答案 0 :(得分:1)

您指定的功能无法使用Qt Designer完成。在Qt Designer中,只能修改通过DESIGNABLE标志启用的Q_PROPERTY,但是setSectionResizeMode()不是Q_PROPERTY而是QHeaderView的方法,该方法在docs中指示:

  

DESIGNABLE属性指示该属性是否应为   在GUI设计工具(例如Qt Designer)的属性编辑器中可见。   大多数属性是DESIGNABLE(默认)。代替true或   false,则可以指定一个布尔成员函数。

因此,您必须以编程方式进行操作:

header = self.table.horizontalHeader()       
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
# ...