次のコードがあり、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)
の呼び出しで使用されているサイズまたは寸法がわからないため、したがって、明示的にサイズを尋ねることなくこのコードを排除できる代替案を見つける必要があります。
このコードセグメントから私が理解していること。アイコンのサイズを取っています。そこで、アイコンのサイズを調べてみます。しかし、アイコンのサイズを取得する方法が見つかりません。
QIcon
には、サイズの異なる複数の画像が含まれている可能性があります。genericicon.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(指定したものよりも小さい最大の画像)が返されます。
2番目の方法は、 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());
_
QIcon
リファレンスドキュメント で説明されているいくつかの方法があります。例えば
QPixmap QIcon::pixmap(const QSize & size, Mode mode = Normal, State state = Off)
希望する結果のサイズを指定するだけで済みます。