c++ - Qt:创建半透明禁用图标状态

标签 c++ qt user-interface icons qpainter

我想从原始图标图像中为我的图标禁用状态动态创建一个半透明图标像素图(不为禁用状态使用额外的图像)。

我认为这需要五分钟,只需创建一个 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);

这些是我从上面的代码中得到的结果:

enter image description here

最佳答案

尝试:

disabledPixmap.fill(Qt::transparent);

创建 QPainter 之前

关于c++ - Qt:创建半透明禁用图标状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841814/

相关文章:

qt - 无法将Opencv与Qt集成

c# - 是否有 System.Drawing.Color 中所有颜色的在线示例?

c++ - 创建类成员函数

c++ - 如何在 Visual Studio 中读取 Unresolved external symbol 错误?

c++ - 找不到加法标识符?

Java jbutton 不可见

java - 注册监听器时出现 NullPointerException

c++ - 结交类友并继承它有什么用?

c++ - QT OpenGL无法完全渲染立方体吗?

Qt 无法加载临时状态消息