qt中,一些彈窗我們期望有一個陰影的效果。我們可以在ui界面中,對整個窗口的邊緣預留10px,然后在構造函數中設置一下的代碼,當然還要設置透明屬性,然后即可實現。
// 創建陰影效果QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect(this);shadowEffect->setColor(Qt::gray); // 陰影顏色shadowEffect->setOffset(0, 0); // 陰影偏移shadowEffect->setBlurRadius(10.0); // 模糊半徑
注意,如果該窗口并非一次性彈窗,而是存在展開收起,類似某種可展開的工具條,這種情況下描繪的陰影,可能會導致窗體刷新異常(我有遇到過,比如窗口收起的時候,原本的窗口區域還有圖像殘留,即便我已經delete了shadowEffect ,這一點我尚未解決)
說到底,用代碼來描繪陰影只是其中一種方式,我們可以將窗體置為透明,填充實現準備的帶有陰影的背景圖片,當然這個肯定不夠靈活。