如何使用QTableView创建列标题及其标签

时间:2014-09-23 17:43:26

标签: python qt pyqt

下面的代码创建了一个简单的QTableView,其中包含一个标题和三个QStandardItem问题:如何使其标题有三列标记为“列0”,“列1”和“列3”?

enter image description here

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_())

2 个答案:

答案 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::DisplayRoleQt::EditRole向图像添加简单文字。如您所见,它是更灵活的方法。