关于python:PyQt:如何调整QTableView标头大小/列宽

您所在的位置:网站首页 qtableview设置列头 关于python:PyQt:如何调整QTableView标头大小/列宽

关于python:PyQt:如何调整QTableView标头大小/列宽

2024-01-07 08:32| 来源: 网络整理| 查看: 265

步骤1:我必须继承QHeaderView类并重写resizeEvent()函数,我从这里得到了它,但是他正在重写TableView的函数,而我是针对HeaderView编写的。

步骤2:然后,我将headerview的sectionResized连接到新函数以处理列的大小调整。 我希望能够在保持总宽度不变的情况下调整特定列的大小,做到这一点,当我缩小一列时,我将下一列以相同的数量扩展,反之亦然。 我以为我不需要执行步骤2,但是事实证明这是必要的。

在这个工作示例下面,我添加了一个水平拆分器,以便您可以尝试使用表调整大小功能。

import sys from PyQt5 import QtWidgets from PyQt5.QtCore import QAbstractTableModel, Qt, QVariant class TableModel(QAbstractTableModel): def __init__(self, parent, datain, headerdata): QAbstractTableModel.__init__(self, parent) self.arraydata=datain self.headerdata=headerdata def rowCount(self,p): return len(self.arraydata) def columnCount(self,p): if len(self.arraydata)>0: return len(self.arraydata[0]) return 0 def data(self, index, role): if not index.isValid(): return QVariant() elif role != Qt.DisplayRole: return QVariant() return QVariant(self.arraydata[index.row()][index.column()]) def headerData(self, col, orientation, role): if orientation==Qt.Horizontal and role==Qt.DisplayRole: return self.headerdata[col] return None class MyHeaderView(QtWidgets.QHeaderView): def __init__(self,parent): QtWidgets.QHeaderView.__init__(self,Qt.Horizontal,parent) self.sectionResized.connect(self.myresize) def myresize(self, *args): '''Resize while keep total width constant''' # keep a copy of column widths ws=[] for c in range(self.count()): wii=self.sectionSize(c) ws.append(wii) if args[0]>0 or args[0]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3