2012-12-11 61 views
0

那麼我一直在努力的Qt應用程序,我需要顯示文件系統使用QFilesystemModel。我已經能夠按預期顯示它。當QFilesystemModel顯示驅動器時,是否可以在QTreeView中更改文件夾顏色?

代碼:

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

這裏面顯示所有QTreeView則驅動器。但我們都知道,默認情況下,每個驅動器內存在的文件夾的顏色是黃色

這就是我想要改變的。有沒有辦法在Qt中,在那裏可以更改文件夾的顏色爲「藍色」 ???

回答

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); 
+0

是的,我只是想通了,我必須這樣做。我會很感激,如果你能幫助我,請它:) – Gojira

+0

我編輯答案,如果它可以幫助你,請投票並接受它。 – Kikohs

+0

那麼我根據你上面說的重新構建我的應用程序.....我也把資源文件和路徑放在QPixMap中。但是當我運行該應用程序時,文件夾在QTreeView內的驅動程序中不再可見。我還發現'data()'被調用了n次。這有什麼問題? :) – Gojira

0

我認爲解決方法是使用您自己的fileIcon

Qt使用當前平臺的默認圖標。我猜你正在使用Windows。

This question爲如何實現提供了一些線索。

(我剛開始學習Qt的自己,順便說一句!)

+0

感謝您的答覆兄弟。是的,我正在使用Windows本身。直到現在我還沒有使用過FileIcon。你可以詳細說一下,請通過示例代碼說:) – Gojira

相關問題