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

时间:2012-12-11 09:13:55

标签: c++ qt qt4 directory qfilesystemmodel

我一直在开发一个Qt应用程序,我需要使用QFilesystemModel显示Filesystem。我已经能够按预期显示它了。

代码:

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

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

这就是我想要改变的。在Qt中有没有办法,可以将文件夹的颜色改为“蓝色” ???

2 个答案:

答案 0 :(得分:1)

您可以通过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);
    }
};

要了解委托,我建议你研究一下这些例子:Spin box delegate

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

然后你像以前一样:

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

答案 1 :(得分:0)

我认为解决方法是使用您自己的fileIcon

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

This question提供了一些如何实施的线索。

(我刚开始学习Qt,BTW!)