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都用上了,還是沒能解決問題。
到論壇上提問沒人答我,百度谷歌都搜了一天了,都是些重複的內容。我實在沒轍了,
誰來告訴我到底哪個環節出錯了?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章