目录
使用QTreeView实现上述截图中左侧的Qt项目栏需要如下几个要点:
设置目录
QFileSystemModel * model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());//设置目录
ui->treeView->setModel(model);
ui->treeView->setRootIndex(model->index(QDir::currentPath()));//要显示的目录
隐藏头和不必要的列
ui->treeView->setHeaderHidden(true);
ui->treeView->hideColumn(1);
ui->treeView->hideColumn(2);
ui->treeView->hideColumn(3);
禁用最后一列的延伸
最后一列的列宽(或选中状态)默认会延伸到QTreeView窗口的最右端,这使得第一列宽度即使没有超出窗口宽度也会出现水平滑条,而且窗口右侧有大量空白,很不规范。为此需要设置如下项:
ui->treeView->header()->setStretchLastSection(false);//禁用最后一列的延伸
内容宽度与窗口宽度的变化关系设置
可以通过如下判断逻辑来编写相关信号槽或重写事件函数:
if(ui->treeView->columnWidth(0) > ui->treeView->width())//第一列宽度大于窗口宽度
ui->treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch); //设置第一列的延伸类型为:随窗口
else
ui->treeView->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);//设置第一列的延伸类型为:随内容.(会有滑条)