我想从原始图标图像(不为禁用状态使用额外图像)为我的图标禁用状态动态创建一个半透明图标像素图。
我认为这需要五分钟,只需创建一个 QPainter,将其不透明度设置为 0.5 或其他值,然后在其中绘制正常的 Pixmap。
问题是 QPainter 似乎从设置为 (205, 205, 205) 的背景开始,我没有什么可以让它完全透明的。
这是我用于标准图标的代码:
icon.addPixmap(QPixmap(filename));
这是我迄今为止尝试为禁用状态制作透明版本的方法:
QPixmap normalPixmap(filename);
QPixmap disabledPixmap(normalPixmap.size());
QPainter p(&disabledPixmap);
p.setBackgroundMode(Qt::TransparentMode);
p.setBackground(QBrush(Qt::transparent));
p.eraseRect(normalPixmap.rect());
// (...) I've tried Composition modes and a lot of other stuff here, with no success
p.setOpacity(0.5);
p.drawPixmap(0, 0, normalPixmap);
p.end();
icon.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::On);
这些是我从上述代码中得到的结果: