Qt透明窗体问题

demystify demystify 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
网上找到了很多实现Qt窗体透明的方法,但是测试发现仅SetAttribute( Qt::WA_TranslucentBackground );有效。其他方法及运行效果如下:
方法一:设置窗体背景色
在窗体构造器里添加:
 setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint );

QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0×00,0xff,0×00,0×00));
setPalette(pal);


结果:窗体显示为黑色


方法二:在Paint事件中使用Clear模式绘图
void Transluent_Test1::paintEvent(QPaintEvent* e)
{
QPainter p( this );
p.setCompositionMode( QPainter::CompositionMode_Clear );

p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
}

结果:绘制的部分是黑色


方法三:全透明背景贴图
[code=cQPalette palette;
QPixmap pixmap(":/Transluent_Test1/Resources/background.png");
palette.setBrush(QPalette::Background, QBrush( pixmap ));
setPalette(palette);
this->setAutoFillBackground(true);][/code]
结果:


我使用的编程环境是:qt5.4.1_64_opengl + vs2013 + win7

请问,为什么这些方法无效?是不是与系统配置有关?
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
demystify
Qt 21,503 成员 26,693 内容