我有这样一个模型:
class GeneralAssetIconModel(QtCore.QAbstractListModel):
def __init__(self, parent=None):
super(GeneralAssetIconModel, self).__init__(parent)
self._data = []
def rowCount(self, parent):
return len(self._data)
def data(self, index, role):
if role == QtCore.Qt.DecorationRole:
taskModel = self._data[index.row()]
ext = taskModel.getData().obj['type']['ext']
pix = QtGui.QPixmap(160, 160)
pix.load('Assets/thumbnail-default.jpg')
if ext == '.ma':
pass
if ext == '.psd':
pix = PhotoshopHelper.getLatestThumbnail(taskModel)
if ext == '.ai':
pix = IllustratorHelper.getLatestThumbnail(taskModel)
if ext == '.mra':
pix = MariHelper.getLatestThumbnail(taskModel)
if ext == '.indd':
pix = IndesignHelper.getLatestThumbnail(taskModel)
我遇到的问题是,“getLatestThumbnail”函数总是从服务器文件中读取缩略图数据,并尝试在视图中显示它,而且这个操作非常慢。当我有30个或更多的项目显示在列表中,整个事情变得非常缓慢和滞后。你知道吗
有没有办法限制视图从模型请求数据的次数?你知道吗
通过缓存模型本身的所有数据,我成功地优化了缩略图加载。也许这不是最好的方法,但它现在工作得很快。这是模型现在的样子。你知道吗
相关问题 更多 >
编程相关推荐