小编Pet*_*cio的帖子

Qt:创建半透明的禁用图标状态

我想从原始的图标图像(不使用残疾状态的额外图像)为我的图标禁用状态创建一个半透明图标Pixmap.

我认为这需要五分钟,只需创建一个QPainter,将其不透明度设置为0.5或者其他东西,并将普通的Pixmap绘制到其中.

问题是QPainter似乎从背景设置为(205,205,205)开始,并且我没有任何东西可以让它完全透明.

这是我用于标准图标的代码:

icon.addPixmap(QPixmap(filename));
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过为禁用状态制作透明版本:

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);
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

c++ user-interface icons qt qpainter

2
推荐指数
1
解决办法
2938
查看次数

标签 统计

c++ ×1

icons ×1

qpainter ×1

qt ×1

user-interface ×1