【问题标题】:QTreeView with QFileSystemModel: How can I remove all columns except "Name"?带有 QFileSystemModel 的 QTreeView:如何删除除“名称”之外的所有列?
【发布时间】:2015-09-24 13:49:04
【问题描述】:

当我在 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);
// ...

现在我的QTreeView 显示了更多带有名称的信息,例如尺寸等;然而,这不是我们想要的行为。

headerVisible 设置为false 会删除我的QTreeView 的“标题”,这没问题,但我怎样才能完全删除其他列?我试过了:

ui->treeView->hideColumn(1);

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

【问题讨论】:

标签: c++ qt qt5 qtreeview qfilesystemmodel


【解决方案1】:
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);

这里的另一种方法(PyQt 但逻辑仍然相同):PyQt: removing unnecessary columns

【讨论】:

  • 隐藏除第一(名称)列之外的所有列。
【解决方案2】:

你的方法没有错。它的工作原理如下:

主窗口标题:

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QFileSystemModel * dirModel;
};

主窗口来源:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QString m_path = "E:";

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

    ui->treeView->setModel(dirModel);

    ui->treeView->hideColumn(1);
}

【讨论】:

  • 它不会隐藏任何列... :-/
  • 你能贴出你的代码的主要部分吗,因为上面的代码隐藏了我电脑上的“Size”列。
  • 嗯,所有 Windows 版本的列是否相同?
  • 可能不行,你应该检查一下文字
  • 那么找到要删除的正确列可能会更加困难,对吧? :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2018-02-01
  • 2015-03-06
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
相关资源
最近更新 更多