我有以下代码,我必须用Qt4代码更改它。
QIcon icon;
QPixmap pixmap = icon.pixmap(); // Qt3 code要将Qt3代码替换为Qt4,我必须将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)调用中使用了什么大小或维度。因此,我需要找出可以消除此代码的替代方案,而无需明确询问大小。
我从这段代码中理解到的。它正在使用图标的大小。所以我试着找出图标的大小。但我还是没有找到任何方法来获得图标的大小。
发布于 2014-11-21 16:47:29
QIcon可能包含多个不同大小的图像,通用的icon.pixmap()太随意了(哪个大小将用于构建QPixmap?)。pixmap() method仍然可用,但您必须指定所需的大小。
如果你知道大小,那么你可以简单地使用:
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());https://stackoverflow.com/questions/27034457
复制相似问题