QT窗口透明设置

来源:互联网 发布:苹果手机一键锁屏软件 编辑:程序博客网 时间:2024/05/17 06:07

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都用上了,还是没能解决问题。
到论坛上提问没人答我,百度谷歌都搜了一天了,都是些重复的内容。我实在没辙了,
谁来告诉我到底哪个环节出错了?
原创粉丝点击