gpt4 book ai didi

c++ - QIcon 始终显示为 2x dpi

转载 作者:行者123 更新时间:2023-11-28 05:18:48 24 4
gpt4 key购买 nike

我有一个额外的窗口,里面有一个文本编辑 + qicon(我称之为 float 编辑)。
我有 2 个 qicons - 用于通常的 DPI(16 x 16 图标),它是 2x 版本(32 x 32)。
名称是正确的 - 它们类似于 icon.png 和 icon@2x.png。
我需要从我的图标中获取像素图并将其提供给第 3 方库。
我不能直接喂 qicon 并且 qpixmap 在我的 qt 版本(5.6.2)中不考虑 dpi,所以我必须根据 dpi 进行转换。
这是我的代码:

// ...
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 和 h 等于 32,但 size 变量尊重 dpi,在 100% dpi 的情况下返回 16 x 16,在 200% 的情况下返回 32 x 32。
谁能帮我解决这个问题?

最佳答案

尝试自己设置设备像素比。

当使用具有不同像素比率的多个显示器时,QPixmap 无法正常工作。也许这是你的问题。因为 QPixmaps 中的 devicePixelRatio 始终是监视器中最高的。但来自 QWindow 的信息是正确的。因此,从 QWindow 设置 devicePixelRatio 应该可以解决这个问题。

auto icon = QIcon(imageName);
int pixelRatio = pFloatingEdit->window()->devicePixelRatio();
auto pxm = icon.pixmap(size);
pxm.setDevicePixelRatio(pixelRatio);

关于c++ - QIcon 始终显示为 2x dpi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com