我正在使用 QTreeView 和 QFileSystemModel。如何更改列名称?
\n\n这是我的代码示例:
\n\nstartDir = "/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)\nRun Code Online (Sandbox Code Playgroud)\n
在 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)
被重新实施。
你需要一个从 QFileSystemModel 继承的新类,并重新实现
headerData()再次。
使用委托模型
独立设置头模型。
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)
最后一种方法最简单。
| 归档时间: |
|
| 查看次数: |
3611 次 |
| 最近记录: |