テキストエディット+ qiconを1つ追加したウィンドウがあります(私はFloating Editと呼んでいます)。
私は通常のDPI(16 x 16アイコン)と2xバージョン(32 x 32)の2つのqiconsを持っています。
名前は正しい - icon.pngと[email protected]のようなものです。
アイコンからピックスマップを取得し、サードパーティのライブラリにフィードする必要があります。
qiconを直接フィードすることはできません。qpixmapは私のQtバージョン(5.6.2)ではdpiを尊重しないので、dpiに関して変換する必要があります。ここ
は私のコードである:
QIconは常に2xdpiとして表示されます
// ...
auto icon = QIcon(imageName);
auto availSizes = icon.availableSizes();
auto size = pFloatingEdit->window()->devicePixelRatio() == 1 ? availSizes.first() : availSizes.last();
auto pxm = icon.pixmap(size);
auto w = pxm.width();
auto h = pxm.height();
// ... <feeding to 3rd party>
問題は、私はいつもwおよび32に等しい時間が、サイズ可変の点の解像度を取得し、の場合には100%のDPIおよび32×32の場合には16×16を返します200%。
誰もその問題で私を助けてくれませんか?
浮動小数点数の比較に '=='演算子を使用するとnエラーです。 –
pFloatingEdit-> window() - > devicePixelRatio()はintを返します。 QPaintDeviceからdevicePixelRatioを呼び出します。 –
ピクセル比率が異なる2つのモニターがありますか? (1つの網膜と1つの非網膜?) – fbucek