【发布时间】:2015-10-04 15:33:58
【问题描述】:
如何改变 QPixmap 的不透明度?
我已将图像设置为背景,实际上我想更改其不透明度,这是我的代码:
Call.h:
private:
QPixmap m_avatar;
调用.cpp:
void Call::resizeEvent(QResizeEvent *e)
{
QPalette pal = palette();
pal.setBrush(backgroundRole(), m_avatar.scaled(e->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
setPalette(pal);
}
我改变了 resizeEvent 函数,但它并没有改变背景的不透明度。
void Call::resizeEvent(QResizeEvent *e)
{
QPixmap result_avatar(m_avatar.size());
result_avatar.fill(Qt::transparent);
QPainter painter;
painter.setOpacity(0.5);
painter.begin(&result_avatar);
painter.drawPixmap(0, 0, m_avatar);
painter.end();
QPalette pal = palette();
pal.setBrush(backgroundRole(), result_avatar.scaled(e->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
setPalette(pal);
}
有什么建议吗?
【问题讨论】:
-
你运行的是什么操作系统?
-
Qt 支持的众多版本中的哪一个?
-
警告:某些样式不会使用调色板进行所有绘图,例如,如果它们使用本机主题引擎。 Windows XP、Windows Vista 和 Mac OS X 样式都是这种情况。