我已经对QFileSystemModel
提出了一些问题,我无法弄清楚为什么当我选择通过扩展程序隐藏某些文件时,其他人仍然会显示但是具有隐藏的文件样式和我想只setReadOnly(false)
个文件以避免重命名文件夹。
这是一个例子:
QVBoxLayout *dockLayout = new QVBoxLayout;
QFileSystemModel *dockModel = new QFileSystemModel;
dockModel->setRootPath("C:/path");
dockModel->setNameFilters(QStringList()<<"*.typ"); //It does show all other types but they are like hidden and unchangeable
dockModel->setReadOnly(false); //I want to setReadOnly(false) for file and (true) for folders.
QTreeView *view = new QTreeView;
view->setModel(dockModele);
view->setRootIndex(dockModele->index("C:/path"));
view->hideColumn(1);
view->hideColumn(2);
view->hideColumn(3);
dockLayout->addWidget(view);
提前感谢。
答案 0 :(得分:0)
我认为快速修复可能是派生自己的项目模型,只允许编辑文件,而不是目录:
class MyFileSystemModel : public QFileSystemModel
{
typedef QFileSystemModel super;
protected:
virtual Qt::ItemFlags flags(const QModelIndex & index) const override
{
// Retreive initial flags from QFileSystemModel's implementation
Qt::ItemFlags flags = super::flags(index);
// Retain all flags except for the Editable flag
flags &= ~Qt::ItemIsEditable;
// Enable editing for all file types except directories
if(!isDir(index))
flags |= Qt::ItemIsEditable;
return flags;
}
};