環境: python 2.7.6, pyqt 4.8.6
想要的效果
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISOwUjN0ETM4EzMxcDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
預設是均勻分布的列寬。
代碼順序:
1、定義QTableview執行個體tableview
2、定義QAbstractTableModel執行個體table_model
3、将tablemodel指派給tableview
4、定義QHeaderView執行個體head
5、把head指派給tableview
6、設定列寬
如果指派head在指派table_model之前,則要把table_model指派給head。
<span style="white-space:pre"> </span>#tableview
self.table_model = my_model(self.my_array, self)
#Model賦給表格
self.ui.tableView.setModel(self.table_model)
#水準表頭
head = QtGui.QHeaderView(QtCore.Qt.Horizontal, self)
#自定義模式,不能拖動
head.setResizeMode(QtGui.QHeaderView.Custom)
self.ui.tableView.setHorizontalHeader(head)
#設定0~3列的寬度
head.resizeSection(0,30)
head.resizeSection(1,200)
head.resizeSection(2,160)
head.resizeSection(3,70)
使用QHeaderView.Custom 模式,隻能通過程式設計來進行修改列寬。
另外,不使用QHeadView,點選第1行,則标題也會被反色顯示。
而且列寬預設是這個樣子。
正确的是:
重寫QItemDelegate中的sizeHint,不能修改列寬。
而且,也不工作。