首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将QIcon转换为QPixmap

问如何将QIcon转换为QPixmap
EN

Stack Overflow用户
提问于 2014-11-20 15:56:29
回答 1查看 18.3K关注 0票数 15

我有以下代码,我必须用Qt4代码更改它。

代码语言:javascript
复制
QIcon icon;
QPixmap pixmap = icon.pixmap();    // Qt3 code

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

代码语言:javascript
复制
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)调用中使用了什么大小或维度。因此,我需要找出可以消除此代码的替代方案,而无需明确询问大小。

我从这段代码中理解到的。它正在使用图标的大小。所以我试着找出图标的大小。但我还是没有找到任何方法来获得图标的大小。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-21 16:47:29

QIcon可能包含多个不同大小的图像,通用的icon.pixmap()太随意了(哪个大小将用于构建QPixmap?)。pixmap() method仍然可用,但您必须指定所需的大小。

如果你知道大小,那么你可以简单地使用:

代码语言:javascript
复制
QPixmap pixmap = icon.pixmap(requiredImageSize);

如果您不这样做(就像您的情况一样),那么您有一些替代方案。首先,您可以使用QIcon::actualSize()方法请求具有指定大小(或更小)的图像。

代码语言:javascript
复制
QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(32, 32)));

支持icon包含16x16,24x24和64x64,那么它将返回24x24 (最大的图像比你指定的小)。

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

代码语言:javascript
复制
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));

请注意,如果您使用第一个方法,并且指定了一个足够大的值,那么您将得到相同的结果:

代码语言:javascript
复制
QPixmap pixmap = icon.pixmap(icon.actualSize(QSize(1024, 1024)));

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

代码语言:javascript
复制
QPixmap pixmap = icon.pixmap(icon.availableSizes().first());
QPixmap pixmap = icon.pixmap(icon.availableSizes().last());
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27034457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档