目录
0.背景
1.详细代码
.h头文件
.cpp实现
构造函数设置样式
0.背景
windows + qt5.12 + c++
我有一个自定义的 QWidget ,名为 BCI_MessageBox ,继承自QWidget,想实现它的圆角+边框
实现图如下(里面都是自定义的按钮,不重要)
实现思路:重写保护函数 【paintEvent】,通过位图遮罩将窗口裁剪为圆角矩形;然后再加一些样式设置边框即可;
1.详细代码
.h头文件
protected:void paintEvent(QPaintEvent *event);
.cpp实现
void BCI_MessageBox::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);//设置边框为圆角12pxpainter.drawRoundedRect(bmp.rect(), 10, 10);setMask(bmp);QWidget::paintEvent(event);
}
构造函数设置样式
【隐藏标题栏 + 白色边框、圆角】
this->setWindowFlags(Qt::Widget|Qt::FramelessWindowHint);setStyleSheet("BCI_MessageBox{border:1px solid #FFFFFF;background:#242424;border-radius:10px;}");
--END--