1.问题:QT中窗体QWidget和QDialog为容器,不能对窗体进行边框圆角样式改变,只能通过绘图QPainter;

2.设置无上边框选项窗口

this->setWindowFlags(Qt::Widget|Qt::FramelessWindowHint); //设置无边框窗口

3.重写绘图事件,把窗体画出来;

//主窗体不能通过样式QSS(border-radius:15px),只能通过绘图改变边框圆角
void Widget::paintEvent(QPaintEvent *event)
{

    //绘制样式
    QStyleOption opt;
    opt.initFrom(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);//绘制样式

    QBitmap bmp(this->size());
    bmp.fill();
    QPainter painter(&bmp);

    painter.setPen(Qt::NoPen);
    painter.setBrush(Qt::black);
    painter.setRenderHint(QPainter::Antialiasing);
    //设置边框为圆角12px
    painter.drawRoundedRect(bmp.rect(), 12, 12);
    setMask(bmp);
    QWidget::paintEvent(event);
}

4.实现的效果

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐