如何将QIcon转换为QPixmap

i

我有以下代码,必须使用Qt4代码进行更改。

QIcon icon;
QPixmap pixmap = icon.pixmap();    // Qt3 code

为了用Qt4替换Qt3代码,我必须替换pixmap()为Qt4提供的以下方法之一。

QPixmap QIcon::pixmap ( const QSize & size, Mode mode = Normal, State state = Off ) const  
QPixmap QIcon::pixmap ( int w, int h, Mode mode = Normal, State state = Off ) const
QPixmap QIcon::pixmap ( int extent, Mode mode = Normal, State state = Off ) const

由于我不知道在此调用中使用的尺寸或尺寸pixmap(void)因此,我需要找出可以消除此代码而无需明确询问大小的替代方法。

我从这段代码中了解了什么。它正在占用图标的大小。因此,我尝试找出图标的大小。但是同样,我没有找到任何获取图标大小的方法。

阿德里亚诺·雷佩蒂(Adriano Repetti)

QIcon可能包含多个具有不同大小的图像,泛型 icon.pixmap()过于随意(将使用哪个大小来构建QPixmap?)。pixmap()方法仍然可用,但是您必须指定所需的大小。

如果您知道尺寸,则可以使用:

QPixmap pixmap = icon.pixmap(requiredImageSize);

如果您不这样做(如您的情况),那么您有其他选择。首先,您可以使用QIcon::actualSize()方法要求指定尺寸(或更小)的图像

QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(32, 32)));

支持icon包含16x16、24x24和64x64,然后它将返回24x24(小于您指定大小的最大图像)。

第二种选择是使用以下命令选择最大的可用图像(假设宽度和高度始终相等)查询大小QIcon::availableSizes()

QList<QSize> sizes = icon.availableSizes();
int maximum = sizes[0].width();
for (int i=1; i < sizes.size(); ++i)
    maximum = qMax(maximum, sizes[i].width());

QPixmap pixmap = icon.pixmap(QSize(maximum, maximum));

请注意,如果您使用第一种方法并指定了足够大的值,则结果将相同:

QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(1024, 1024)));

当然,您也可以选择第一个/最后一个可用大小:

QPixmap pixmap = icon.pixmap(icon.availableSizes().first());
QPixmap pixmap = icon.pixmap(icon.availableSizes().last());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章