QTreeView更改列名

Ale*_*dre 5 python pyqt

我正在使用 QTreeView 和 QFileSystemModel。如何更改列名称?

\n\n

这是我的代码示例:

\n\n
startDir = "/home/abusquets/cads"\nfilter = ["*.dxf"]\n\nmodel = QtGui.QFileSystemModel()\nmodel.setFilter(QDir.AllDirs | QDir.NoDotAndDotDot | QDir.AllEntries)\nmodel.setRootPath(startDir)\n\n#Nom\xc3\xa9s volem fitxers dxf\nmodel.setNameFilters(filter)\nmodel.setNameFilterDisables(0)\n\ntree = QtGui.QTreeView()\ntree.setModel(model)\ntree.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)\n\ntree.setRootIndex(model.index(startDir)) \nself.setCentralWidget(tree)\n
Run Code Online (Sandbox Code Playgroud)\n

yur*_*hen 5

在 QStandardItemModel 中,你可以这样做:

model->setHeaderData(0,Qt::Horizontal, "---header0---");
Run Code Online (Sandbox Code Playgroud)

但是,在 QFileSystemModel 中,

headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const
Run Code Online (Sandbox Code Playgroud)

被重新实施。

方法1

你需要一个从 QFileSystemModel 继承的新类,并重新实现

headerData()再次。

方法2

使用委托模型

方法3

独立设置头模型。

QStandardItemModel *model1=new QStandardItemModel(0,5,this);

model1->setHeaderData(0, Qt::Horizontal, "header0");
model1->setHeaderData(1, Qt::Horizontal, "header1");

tree->header()->setModel(model1);
Run Code Online (Sandbox Code Playgroud)

最后一种方法最简单。