qt開發過程中,新增過自定義標題欄後,因為設定了
setwindowflags(qt::framelesswindowhint);
屬性,widget介面後面陰影沒有了。
現在使用paint的方法繪製陰影和視窗圓角,一方面能設定陰影,一方面可解決設定的視窗圓角後,仍殘留四個小角的問題。
廢話不說 ,上**:
先設定屬性:
setattribute(qt::wa_translucentbackground, true);
然後:void paintevent(qpaintevent *event)
painter.setrenderhint(qpainter::antialiasing);
painter.setbrush(qbrush(qt::white));
painter.setpen(qt::transparent);
qrect rect = this->rect();
rect.setx(5);
rect.sety(5);
rect.setwidth(rect.width() - 5);
rect.setheight(rect.height() - 5);
// rect: 繪製區域 15:圓角弧度
painter.drawroundedrect(rect, 5, 5);
}paintevent 只是一種解決方法,拋磚引玉,還有什麼方法可以分享下。
希望能幫到你。
qt 設定視窗圓角
最近在用qss做介面美化的工作,發現乙個問題就是qss不能對頂級視窗設定邊角圓弧,於是得另闢蹊徑。據網上搜尋可得到的方法我實現了三種 cpp view plain copy setwindowflags qt framelesswindowhint qbitmap bmp this size bmp...
Qt設定彈出視窗背景陰影效果
通過maskwidget來實現,原理如下 1.設定要遮擋的窗體 一般是主視窗 2.設定目標視窗,並繫結該視窗的顯示事件,一旦目標顯示,陰影視窗就顯示 反則同樣 3.完成陰影效果。據觀察存在一定問題,目標視窗的父視窗問題,工作列會有兩個視窗圖示如 直接插入 maskwidget.h ifndef ma...
QT圓角視窗
以前寫的qt圓角都是在paintevent中繪製圓角背景,但是如果圓角附近需要放控制項,控制項就會因為自己的重繪而跑到圓角的外面去了,還有一種辦法就是設定setmask,自己控制 需要顯示,不需要顯示,bmp填充為乙個黑色圓角矩形,就能讓視窗的可見區域侷限於圓角矩形內,即使控制項越界也不會顯示出來。...