QFileSystemModel отключить QFileIconProvider - PullRequest
0 голосов
/ 09 ноября 2018

Посмотрев вокруг, я увидел, что QFileIconProvider в QFileSysetmModel может значительно замедлить процесс. В моем конкретном случае мне это вообще не нужно, но я не могу понять, как просто отключить / удалить его, не вызывая сбой. Я впервые играю со структурой модель / представление, поэтому, возможно, ответ довольно прост, и я просто пропустил его в документации ... но сейчас я могу только найти примеры его подкласса, но примеров нет полностью избавиться от него.

1 Ответ

0 голосов
/ 09 ноября 2018

Задача, которая занимает много времени в QFileIconProvider, состоит в том, чтобы предоставить значок, так как он должен загрузить файл и т. Д. Поэтому обходной путь для вашего случая - вернуть нуль QIcon:

import sys
from PyQt4 import QtCore, QtGui

class EmptyIconProvider(QtGui.QFileIconProvider):
    def icon(self, _):
        return QtGui.QIcon()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    view = QtGui.QTreeView()
    model = QtGui.QFileSystemModel(view)
    model.setIconProvider(EmptyIconProvider())
    model.setRootPath(QtCore.QDir.currentPath())
    view.setModel(model)
    view.setRootIndex(model.index(QtCore.QDir.currentPath()))
    view.show()
    sys.exit(app.exec_())
...