QTreeView 与 QFileSystemModel:如何删除除“名称”之外的所有列?

r4n*_*00b 4 c++ qt qtreeview qfilesystemmodel qt5

当我在 Qt5 中开发与文件管理器非常相似的东西时,我尝试实现一个非常基本的树视图,仅显示目录名称而不显示任何其他信息。但是,(似乎)QTreeView不允许我决定要显示哪些列。

这是我所拥有的:

// ...
QString m_path = "C:/Users/mine";

dirModel = new QFileSystemModel(this);
dirModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
dirModel->setRootPath(m_path);

ui->treeView->setModel(dirModel);
// ...
Run Code Online (Sandbox Code Playgroud)

现在,我的QTreeView名称会显示更多信息,例如尺寸等;然而,这不是期望的行为。

设置headerVisiblefalse删除我的“标题” QTreeView,这是可以的,但如何才能完全删除其他列呢?我试过:

ui->treeView->hideColumn(1);
Run Code Online (Sandbox Code Playgroud)

只是为了测试这是否有效,但这并没有改变任何事情。

ram*_*ror 5

QTreeView* treeView = new QTreeView(centralWidget());
QFileSystemModel* fsModel = new QFileSystemModel(treeView);
fsModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs);
fsModel->setRootPath("/home/user");
treeView->setModel(fsModel);
// first column is the name
for (int i = 1; i < fsModel->columnCount(); ++i)
    treeView->hideColumn(i);

QHBoxLayout* hLayout = new QHBoxLayout(centralWidget());
hLayout->addWidget(treeView);
Run Code Online (Sandbox Code Playgroud)

这里的另一种方法(PyQt,但逻辑仍然相同):PyQt:删除不必要的列