以前写的qt圆角都是在paintEvent中绘制圆角背景,但是如果圆角附近需要放控件,控件就会因为自己的重绘而跑到圆角的外面去了,还有一种办法就是设置setMask,自己控制哪里需要显示,哪里不需要显示,bmp填充为一个黑色圆角矩形,就能让窗口的可见区域局限于圆角矩形内,即使控件越界也不会显示出来。
但是会有锯齿
QBitmap bmp(this->size());
bmp.fill();
QPainter p(&bmp);
//p.setRenderHint(QPainter::Antialiasing, true);
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.drawRoundedRect(bmp.rect(),20,20);
setMask(bmp);