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.实现的效果