我已經將QFileSystemModel綁定到QTreeView。 QFileSystemModel readOnly設置爲false,因此用戶可以重命名文件... 但是,我不希望用戶意外重命名文件並忘記其擴展名,因爲這將導致它從QTreeView中排除,因爲我正在過濾文件類型...如何隱藏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