下面的代码创建了一个简单的QTableView
,其中包含一个标题和三个QStandardItem
。
问题:如何使其标题有三列标记为“列0”,“列1”和“列3”?
import os,sys
from PyQt4 import QtCore, QtGui
app=QtGui.QApplication(sys.argv)
class Window(QtGui.QTableView):
def __init__(self):
super(Window, self).__init__()
header=QtGui.QHeaderView(QtCore.Qt.Horizontal, self)
self.setHorizontalHeader(header)
model=QtGui.QStandardItemModel()
for i in range(3):
model.appendRow(QtGui.QStandardItem('Item %s'%i))
self.setModel(model)
self.show()
window=Window()
sys.exit(app.exec_())
答案 0 :(得分:3)
使用
model = QtGui.QStandardItemModel(0,3) # three columns
model.setHorizontalHeaderLabels( [ "Column 0", "Column 1", "Column 3"] )
答案 1 :(得分:1)
您也可以使用:
bool QAbstractItemModel.setHeaderData (self, int section, Qt.Orientation orientation, QVariant value, int role = Qt.EditRole)
但它需要设置部分和方向。
优势:
您可以设置角色,例如Qt::DecorationRole
,它允许您将图像设置为标题。您可以组合不同的角色并获得美妙的结果。例如,您可以使用Qt::DisplayRole
或Qt::EditRole
向图像添加简单文字。如您所见,它是更灵活的方法。