Qt中設置按鈕透明的方法


在Qt中讓按鈕實現透明的效果,查了好多資料,關於這個其實不是很多,總結下來可以用下面兩種方法實現:

第一種方法:使用setFlat函數實現按鈕透明的效果。


QPushButton *mode =new QPushButton(this);
mode->setText("mode");
mode->move(200,100);
mode->setFlat(true);//就是這句實現按鈕透明的效果。
第二種方法,在design視圖下,右鍵點擊按鈕-》Change StyleSheet,add color -》選擇background-color,之后把最右下角的Alpha通道設置為0(其余RGB沒有關系),就能實現透明的效果,效果和第一種方法一樣。也可以通過setStyleSheet函數來實現;setStyleSheet("background-color: rgba(0, 0, 0, 0)"); 同樣前三個0就是RGB值,可以是別的。
我在實現的過程中,雖然用這樣的方法設置了透明的效果,但是按鈕的背景色是黑的,並不是透明的,不能顯示出背景圖片,后來就用ps做了一個和按鈕大小一樣的png格式的透明圖片,然后用同樣的右鍵,Change styleSheet的方式,add background-image,選擇了我做的那個透明圖片,最終透明效果就完全實現了。我猜測之所以還要這么做,應該是父窗口使用了setStyleSheet的方式設置了背景色的原因。如果不用這種方式設置背景色,應該就不需要經過這一步了。

(注:已經確認就是這個問題,父窗口最好不要采用setStyleSheet方式設置背景色。這種情況下就不需要加那個透明圖片了。不過在我實驗過程中,這兩種方法還是有區別的,第一種方法實現透明后,當按下按鈕的時候,能顯示一下按鈕的輪廓以及按鈕的顏色;第二種方法實現透明后,當按下按鈕后,顯示一下按鈕的輪廓並且按鈕是黑色的,就是點擊一下屏幕,出現一閃而過的黑色,想要不出現黑色,就要用第一種方法或者第二種方法加一個透明按鈕圖(和按鈕大小一致的透明圖片,png格式)。)

總結一下:

以上兩種方法,在界面靜態的時候均能實現透明的效果,不過按下按鈕的時候會有不同的狀態,具體如下:

1. 只用第一種方法的效果是:點擊按鈕,能顯示出來按鈕本來的輪廓和顏色;

2. 只用第二種方法的效果是:點擊按鈕,顯示按鈕的輪廓,但是按鈕是黑色的;

3. 第一種和第二種方法同時都使用:點擊按鈕,不顯示按鈕的輪廓,更沒有按鈕顏色,不過依然有按鈕被按下的動態效果;

4. 第一種或者第二種方法,加上一個透明按鈕圖(和按鈕大小一致的透明圖片,png格式),均能實現以上第三種情況的效果。

以上內容說到使用圖片,順便說一個問題,就是Qt項目里的qrc文件(Qt resource 文件)不會自動更新,每次改變了原圖后,直接在圖片目錄替換原有文件是不行的,還需要在qrc文件里remove那張圖片,然后重新add那張修改的圖片,design視圖才會改變過來,編譯后才對。
————————————————
版權聲明:本文為CSDN博主「DanielShieh」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/fengyunlian521/article/details/43234191


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM