Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法) |
您所在的位置:网站首页 › 圆角边框样式怎么画 › Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法) |
Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口。下面分别叙述用这两种方式来实现窗口边框圆角的效果。 一、使用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)一个参数 border-radius:15px (2)两个参数 border-radius: 15px 50px 第一个参数设置X轴方向的半径 第二个参数设置Y轴方向的半径 从图中可以看出设置一个参数代表X轴和Y轴设置了同样的值,而两个参数分别为X轴和Y轴方向的半径。大家可以根据不同需要去设置参数。 二、在paintEvent事件中绘制窗口边框这里我们需要重写paintEvent方法,具体代码如下: void paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // 反锯齿; painter.setBrush(QBrush(Qt::red)); painter.setPen(Qt::transparent); QRect rect = this->rect(); rect.setWidth(rect.width() - 1); rect.setHeight(rect.height() - 1); painter.drawRoundedRect(rect, 15, 15); //也可用QPainterPath 绘制代替 painter.drawRoundedRect(rect, 15, 15); { QPainterPath painterPath; painterPath.addRoundedRect(rect, 15, 15); p.drawPath(painterPath); } QWidget::paintEvent(event); } 效果如下: 如果不写painter.setRenderHint(QPainter::Antialiasing);则圆角会出现锯齿,如下图。 原始图 设置无边框或者背景透明可以去掉白色方框 给按钮设置如下样式即可。 {} 或者 {border:none;}
http://blog.csdn.net/goforwardtostep/article/details/52084538 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |