当QFilesystemModel显示驱动器时,是否可以在QTreeView中更改文件夹颜色

Can folder color be changed in QTreeView when QFilesystemModel displays drives?

本文关键字:QTreeView 颜色 文件夹 显示 QFilesystemModel 驱动器 是否      更新时间:2023-10-16

好吧,我一直在开发一个Qt应用程序,我需要使用QFilesystemModel显示文件系统。我已经能够按预期显示它。

法典:

QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath())
tree->setModel(model);

这将显示 QTreeView 中的所有驱动器。但是我们都知道默认情况下,每个驱动器中存在的文件夹的颜色是黄色的。

这就是我想要改变的。Qt中有没有办法将文件夹的颜色更改为"蓝色???

您可以通过 qt 委托自定义您的 QTreeView。但如果只是为了一个图标,我认为你可以重新实现:

class MyQFileSystemModel : public QFileSystemModel {
public:
    QVariant data( const QModelIndex& index, int role ) const {
        if( role == Qt::DecorationRole ) { 
            return QVariant(QIcon(QPixmap("icon.png")));
        }
        return QFileSystemModel::data(index, role);
    }
};

要了解委托,我建议您研究以下示例: 旋转框委托

编辑:您必须从QFileSystemModel重新实现方法数据,必须从QFileSystemModel继承。

然后你像以前一样做:

MyQFileSystemModel* model = new MyQFileSystemModel;
model->setRootPath(QDir::currentPath())
tree->setModel(model);

我假设解决方法是使用您自己的 fileIcon。

Qt使用当前平台的默认图标。我猜你在Windows上。

这个问题提供了一些关于如何实现的线索。

(我自己刚开始学习Qt,顺便说一句!