今天乙個同事為乙個視窗視覺的圓角愁了一天。。
視覺要求視窗只有上半部分是圓角,下半部分是直角,還需要半透明。那單靠我們的qpainter類的drawroundedrect方法就不能實現了,因為這個畫出來的圓角是4個。
想必肯定有剛接觸qt的同學們都多少有點糾結,那今天咱就寫一篇關於視窗中4個角怎麼任意實現各個圓角的實現方案吧。
完整工程**路徑如下(vs2015+qt5.9.6):
完整工程路徑
先上圖吧:
paintevent函式是這樣的:
void mywindow::paintevent(qpaintevent * event)
case righttop: // 右上角圓角
case leftbottom:// 左下角圓角
case rightbottom: // 右下角圓角
case top: // 上兩個圓角
case bottom: // 下兩個圓角
case left: // 左兩個圓角
case right: // 右兩個圓角
case all: // 四個角圓角
default:
break;
}painter.setclippath(candrawingpatharea);
qcolor color(qt::darkred);
color.setalpha(200);
painter.setpen(qt::nopen);
painter.setbrush(color);
painter.drawrect(rect());
}
QT實現視窗圓角
實現上邊角圓弧 setwindowflags qt framelesswindowhint qbitmap bmp this size bmp.fill qpainter p bmp p.setpen qt nopen p.setbrush qt black p.setrenderhint qpai...
Qt 用Qt實現圓角視窗
實現該功能主要是呼叫qwidget的成員函式setmask.我們可以看到qt assistant介紹了兩種setmask方法,這裡我們採用第一種方法。也就是用qbitmap類例項來實現的方面。第二種方法需要自己繪製區域來實現。兩種方法都比較靈活。在dialog.cpp的建構函式中新增如下 setwi...
Qt 設定視窗邊框的圓角
一 通過qss border top left radius 設定左上角圓角 border top right radius 設定右上角圓角 border bottom left radius 設定左下角圓角 border bottom right radius 設定右下角圓角 border rad...