继承QFileSystemModel,添加变量set,重写data和setData函数即可
//头文件:
public:
QVariant data(const QModelIndex &index, int role) const;
bool setData(const QModelIndex &idx, const QVariant &value, int role);
private:
//! 文件夹打开状态的index Set
QSet<QPersistentModelIndex> expanded_folder_index_set;
//源文件:
QVariant FileSystemModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || index.model() != this)
{
return QVariant();
}
switch (role)
{
case Qt::DecorationRole:
if (index.column() == 0)
{
// 是否为根目录
if (fileInfo(index).isRoot())
{
return QIcon(":/icons/left/icon_disk.svg");
}
// 文件是否展开
if (expanded_folder_index_set.contains(index))
{
return QIcon(":/icons/left/icon_folder_open.svg");