QFileSystemModel 禁用 QFileIconProvider
QFileSystemModel disable QFileIconProvider
环顾四周,我发现 QFileSysetmModel 中的 QFileIconProvider 会大大降低运行速度。在我的特殊情况下,我根本不需要它,但我无法找到如何轻松 disable/remove 它而不会导致崩溃。这是我第一次使用 model/view 框架,所以答案可能很简单,我只是在文档中错过了它……但现在我只能找到子类化它的实例,但是没有完全摆脱它的例子。
在 QFileIconProvider
中消耗大量时间的任务是提供图标,因为它必须加载文件等。因此针对您的情况的解决方法是 return null 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_())
环顾四周,我发现 QFileSysetmModel 中的 QFileIconProvider 会大大降低运行速度。在我的特殊情况下,我根本不需要它,但我无法找到如何轻松 disable/remove 它而不会导致崩溃。这是我第一次使用 model/view 框架,所以答案可能很简单,我只是在文档中错过了它……但现在我只能找到子类化它的实例,但是没有完全摆脱它的例子。
在 QFileIconProvider
中消耗大量时间的任务是提供图标,因为它必须加载文件等。因此针对您的情况的解决方法是 return null 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_())