QT窗口透明设置


QT窗口透明设置

这问题折腾我一整天了,在网上搜几种方法,一一测试,然后崩溃中....

一.设置窗口的背景色
我比较懒,没用网上介绍的方法一一敲代码,而直接在qt creator 中设置palette中的window项为透明。结果得到不是理所当然的透明效果,而是一个黑色的矩形。 

二.在窗口的构造函数中使用如下代码
setAttribute(Qt::WA_TranslucentBackground, true);
结果窗口背景还是黑色的,后来才知道,前面还要加上下面这句才有效果
setWindowFlags(Qt::FramelessWindowHint);  //把窗口设置成没框架的
我是用win7环境测试的,QMainWindow--->QGLWidget--->QWidget 在我的程序中,三个窗口的父子关系就是这样的。我想让QWidget模拟三维游戏中底部的那个用户交互界面。
我把上面两行代码贴在QMainWindow中,主窗口是透明了,QWidget这个窗口也透明了还如愿地不影响其中的按钮,可中间的QGLWidget却不见了,连鼠标事件也感应不到了;
我把上面两行代码贴在QGLWidget的构造函数中,没效果;

贴在QWidget中也是一样不透明;

甚至去掉了QMainWindow,结果那QWidget的背景还是雷打不动的黑色;

那个崩溃啊,直使我想放弃QT

三.窗口的构造函数中使用如下代码 
setWindowOpacity(0.5);
一提这函数我气就不打一处来,窗口是半透明了,可我那窗口中的按钮也被半透明了,可恨的继承,更可恨的是一嵌入到QGLWidget窗口中,就又变成讨厌的黑色矩形了。要它何用!

四.就是重载void paintEvent( QPaintEvent* ); 了
在这个函数内我用QPainter 又是刷透明通道,又是画透明图片,结果那QWidget的背景该怎么黑就怎么黑,就是不透明。

styleSheet都用上了,还是没能解决问题。
到论坛上提问没人答我,百度谷歌都搜了一天了,都是些重复的内容。我实在没辙了,
谁来告诉我到底哪个环节出错了?
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值