当前位置:网络安全 > Qt设置窗口边框圆角(使用QSS和PaintEvent两种方法)

Qt设置窗口边框圆角(使用QSS和PaintEvent两种方法)

  • 发布:2023-10-10 20:35

-->

Qt 设置窗口边框圆角的方法有两种,一种是设置样式,另一种是在paintEvent 事件中绘制窗口。下面介绍如何使用这两种方法来实现窗口边框圆角的效果。

1。使用setStyleSheet方法

this->setStyleSheet(“QWidget{border-top-left-radius:15px;border-top-right-radius:5px;}”));
主要用到的是border-radius属性,关于这个属性,可选样式有
border-top-left-radius,用于设置左上角圆角;
border-top-right-radius 设置右上角圆角;
border-bottom-left-radius 设置左下角圆角;
border-bottom-right-radius 设置右下角圆角;
border-radius 设置四个角圆角;

关于border-radius后面的参数
(1) 1个参数
border-radius:15px

(2) 两个参数
border-radius: 15px 50px
第一个参数设置 X 轴方向的半径
第二个参数设置 Y 轴方向的半径

从图中可以看出,设置一个参数就是将X轴和Y轴设置为相同的值,两个参数分别是X轴和Y轴方向的半径。您可以根据不同的需求设置参数。

2。在paintEvent事件中绘制窗口边框

这里我们需要重写paintEvent方法。具体代码如下:

void PaintEvent(QPaintEvent *事件)
{
QPainter画家(本);
Painter.setRenderHint(QPainter::Antialiasing); // 抗锯齿;
Painter.setBrush(QBrush(Qt::red));
Painter.setPen(Qt::transparent);
Q矩形 矩形 = this->矩形();
矩形.setWidth(矩形.width() - 1);
rect.setHeight(rect.height() - 1);
画家.drawRoundedRect(矩形, 15, 15);
//也可以使用QPainterPath代替painter.drawRoundedRect(rect, 15, 15);
进行绘制 {
QPainterPath PainterPath;
PainterPath.addRoundedRect(矩形, 15, 15);
p.drawPath(painterPath);
}
QWidget::paintEvent(事件);
}

效果如下:

如果不写painter.setRenderHint(QPainter::Antialiasing);,圆角就会出现锯齿状,如下图。

相关文章