我正在尝试在我的PyQt4应用中使用QPixmapCache
,但它似乎还需要时间,任何人都可以查看下面的代码:
def data(self, index, role):
if index.isValid() and role == QtCore.Qt.DecorationRole:
row = index.row()
column = index.column()
value = self._listdata[row][column]
key = "image:%s"% value
pixmap = QtGui.QPixmap()
# pixmap.load(value)
if not QtGui.QPixmapCache.find(key, pixmap):
pixmap=self.generatePixmap(value)
QtGui.QPixmapCache.insert(key, pixmap)
# pixmap.scaled(400,300, QtCore.Qt.KeepAspectRatio)
return QtGui.QImage(pixmap)
if index.isValid() and role == QtCore.Qt.DisplayRole:
row = index.row()
column = index.column()
value = self._listdata[row][column]
fileName = os.path.split(value)[-1]
return os.path.splitext(fileName)[0]
def generatePixmap(self, value):
pixmap=QtGui.QPixmap()
pixmap.load(value)
pixmap.scaled(100, 120, QtCore.Qt.KeepAspectRatio)
return pixmap
答案 0 :(得分:0)
看起来您正在尝试从文件名列表中创建图像缓存。
首次加载图像时,如果有大量相同的图像,缓存只会提高性能。每个图像必须至少创建一次,因此如果图像全部(或大部分)不同,它们将不会加载更快。事实上,由于缓存本身的开销,整体性能可能略微更差。
如果应用程序需要不断刷新图像列表,缓存只会提供性能提升(在这种情况下,您需要检查磁盘上的文件是否在此期间没有更改)。
您还应该注意到QPixmapCache有一个cache limit,默认情况下,桌面系统为10 MiB。不过,这可以设置为你喜欢的任何值。