Qt 圓角視窗的實現 想讓哪個角圓就讓哪個角圓

2021-09-29 11:25:46 字數 931 閱讀 7353

今天乙個同事為乙個視窗視覺的圓角愁了一天。。

視覺要求視窗只有上半部分是圓角,下半部分是直角,還需要半透明。那單靠我們的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...