29QPixmap QAbstractFileIconEngine::pixmap(
const QSize &size, QIcon::Mode mode,
32 return scaledPixmap(size, mode, state, 1.0);
35QPixmap QAbstractFileIconEngine::scaledPixmap(
const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale)
43 QString key = cacheKey();
45 return filePixmap(size * scale, mode, state);
47 key += u'_' + QString::number(size.width() * scale);
50 if (!QPixmapCache::find(key, &result)) {
51 result = filePixmap(size * scale, mode, state);
53 QPixmapCache::insert(key, result);
59QSize QAbstractFileIconEngine::actualSize(
const QSize &size, QIcon::Mode mode,
62 const QList<QSize> &sizes = availableSizes(mode, state);
63 const int numberSizes = sizes.size();
70 const int sizeArea = size.width() * size.height();
71 QSize actualSize = sizes.first();
72 int actualArea = actualSize.width() * actualSize.height();
73 for (
int i = 1; i < numberSizes; ++i) {
74 const QSize &s = sizes.at(i);
75 const int a = s.width() * s.height();
76 if ((sizeArea <= a && a < actualArea) || (actualArea < sizeArea && actualArea < a)) {
82 if (!actualSize.isNull() && (actualSize.width() > size.width() || actualSize.height() > size.height()))
83 actualSize.scale(size, Qt::KeepAspectRatio);