方案一,在构造函数中添加以下代码,使用一个BITMAP来实现窗体绘画:
setWindowFlags(Qt::FramelessWindowHint);
QBitmap bmp(this->size());
bmp.fill();
QPainter p(&bmp);
p.setPen(Qt::NoPen);
p.setBrush(Qt::black);
p.setRenderHint(QPainter::Antialiasing);
p.drawRoundedRect(bmp.rect(), 10, 10); //四个角都是圆弧
setMask(bmp);
方案二,重写事件
void userwindow::resizeEvent(QResizeEvent *e)//顶层窗体圆角
{
QWidget::resizeEvent(e);
QSize sz = e->size();
QBitmap mask(sz);
QPainter painter(&mask);
painter.setRenderHint(QPainter::Antialiasing);
painter.fillRect(0, 0, sz.width(), sz.height(), Qt::white);
painter.setBrush(QColor(0, 0, 0));
painter.drawRoundedRect(0, 0, sz.width(), sz.height(), 5, 5);
setMask(mask);
}