0

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

代码:

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

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

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

4

2 回答 2

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);
于 2012-12-11T10:31:45.093 回答
0

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

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

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

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

于 2012-12-11T09:24:11.903 回答