我正在使用QFileSystemModel和QTreeView来显示根目录的内容 想要在添加或删除驱动器时刷新qtreeview。
尝试使用刷新按钮通过插槽实现此功能,删除模型并再次将其设置为QTreeView。但问题是,在第二次将模型设置为视图后,它没有将列宽扩展为其内容。
有没有最好的解决方案来实现这一目标。这是一个代码位......
QTreeView fileExplorerTreeView = new QTreeView();
fileExplorerTreeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
fileExplorerTreeView->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
void loadFileExplorer()
{
if(fileSystemModel)
{
delete fileSystemModel;
fileSystemModel = 0;
}
fileSystemModel = new QFileSystemModel;
fileSystemModel->setRootPath("");
fileExplorerTreeView->setModel(fileSystemModel);
QHeaderView* hHeader = fileExplorerTreeView->header();
hHeader->hideSection(1);
hHeader->hideSection(2);
hHeader->hideSection(3);
fileExplorerTreeView->resizeColumnToContents(0);
fileExplorerTreeView->header()->setStretchLastSection(false);
}
答案 0 :(得分:0)
问题是该模型没有观察fs变化,也没有更新。 而且你希望它能够在更高的层次上进行控制。
因此,如果您将根路径设置为我的计算机,它应该可以工作:
QString rPath = fileSystemModel->myComputer().toString();
fileSystemModel->setRootPath(rPath);
Here是一个类似的问题(更改过滤器没有更新模型)这样解决了。
此外,您不必在每次更改时调整表格大小。
只需更改调整大小模式:
void QHeaderView::setSectionResizeMode(int logicalIndex, ResizeMode mode)