如何在 Pyqt4 中设置 QTableView 标头名称
Posted
技术标签:
【中文标题】如何在 Pyqt4 中设置 QTableView 标头名称【英文标题】:how to set the QTableView header name in Pyqt4 【发布时间】:2013-01-03 08:47:32 【问题描述】:我想知道如何在 QTableview 中设置自定义标题名称
当我创建 QTableview 时,我得到列和行标题名称为 1、2、3、4。 我想知道如何设置自己的列和标题。
我按要求得到了solution,希望它可以帮助遇到同样情况的人
【问题讨论】:
【参考方案1】:如果您在自己的模型中使用QTableView
,则需要在模型中实现headerData()
方法以返回标头数据。这是一个仅显示列标题的 sn-p - 更改 header_labels
值以更改标题文本。
class TableModel(QAbstractTableModel):
header_labels = ['Column 1', 'Column 2', 'Column 3', 'Column 4']
def __init__(self, parent=None):
QAbstractTableModel.__init__(self, parent)
def headerData(self, section, orientation, role=Qt.DisplayRole):
if role == Qt.DisplayRole and orientation == Qt.Horizontal:
return self.header_labels[section]
return QAbstractTableModel.headerData(self, section, orientation, role)
【讨论】:
我使用QtGui.QStandardItemModel()
作为模型,我链接到QtGui.QTableView()
。我可以使用setHeaderData()
设置标题
@PBLNarasimhaRao,其实headerData()
是QAbstractItemModel
的虚函数,而你的QStandardItemModel
是QAbstractItemModel
的子类。请查看srinikom.github.io/pyside-docs/PySide/QtCore/…【参考方案2】:
原发帖者生成了以下代码作为解决方案(最初发布在一个被版主删除的粘贴箱链接中):
from PyQt4 import QtCore, QtGui
class myWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(myWindow, self).__init__(parent)
self.centralwidget = QtGui.QWidget(self)
self.view = QtGui.QTableView(self.centralwidget)
self.view.setSortingEnabled(True)
self.gridLayout = QtGui.QGridLayout(self.centralwidget)
self.gridLayout.addWidget(self.view, 1, 0, 1, 3)
self.setCentralWidget(self.centralwidget)
self.model = QtGui.QStandardItemModel(self)
for rowName in range(3) * 5:
self.model.invisibleRootItem().appendRow(
[ QtGui.QStandardItem("row 0 col 1".format(rowName, column))
for column in range(3)
]
)
for column in range(3):
self.model.setHeaderData(column, QtCore.Qt.Horizontal,
'Column %d' % int(column+1))
for row in range(3 * 5):
self.model.setHeaderData(row, QtCore.Qt.Vertical,
'Row %d' % int(row+1))
self.proxy = QtGui.QSortFilterProxyModel(self)
self.proxy.setSourceModel(self.model)
self.view.setModel(self.proxy)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
main = myWindow()
main.show()
main.resize(400, 600)
sys.exit(app.exec_())
【讨论】:
以上是关于如何在 Pyqt4 中设置 QTableView 标头名称的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PyQt4 的 QDateTimeEdit 中设置今天的日期和具体时间?
如何使用 python 在 Maya 中设置目录?目前使用 PyQt4,但愿意接受任何建议
如何在 Qt QTableView 中设置 Shift + 单击选择的初始索引?