如何隐藏QFileSystemModel上的文件扩展名
问题描述:
我已经将QFileSystemModel绑定到QTreeView。 QFileSystemModel readOnly设置为false,因此用户可以重命名文件... 但是,我不希望用户意外重命名文件并忘记其扩展名,因为这将导致它从QTreeView中排除,因为我正在过滤文件类型...如何隐藏QFileSystemModel上的文件扩展名
如何隐藏文件扩展名保持重命名功能?
感谢
答
您必须创建特定的项目委托您的情况,并与您的观点联系起来。
如文档here
void QAbstractItemView::setItemDelegate(QAbstractItemDelegate * delegate)
中所述设置此视图和它的模型委托的项目委托。如果您想完全控制项目的编辑和显示,这非常有用。
此代理将负责显示文件的名称而不包含扩展名,并允许编辑文件名。
答
尝试重新实现data()
和setData()
的作用Qt::EditRole
:
virtual QVariant data (const QModelIndex & index, int role = Qt::DisplayRole) const
{
if (role == Qt::EditRole)
{
return QVariant(fileName(index));
}
else
return QFileSystemModel::data(index, role);
}
virtual bool setData (const QModelIndex & idx, const QVariant & value, int role = Qt::EditRole)
{
if (role == Qt::EditRole)
{
return QFileSystemModel::setData(idx, QVariant(value.toString() + fileInfo(idx).completeSuffix()), role);
}
else
return QFileSystemModel::setData(idx, value, role);
}
请把一些代码段 – ScarCode