Qt 中设置窗口边框的圆角
来源:互联网 发布:比特币交易所java源码 编辑:程序博客网 时间:2024/05/17 22:12
转载自:http://blog.csdn.net/goforwardtostep/article/details/52084538
Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口。
下面分别叙述用这两种方式来实现窗口边框圆角的效果。
一、使用setStyleSheet方法
this->setStyleSheet(“QWidget{background-color:gray;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);则圆角会出现锯齿,如下图。
仔细对比上图可以看见圆角曲线有锯齿状。
注意:
(1)在使用这两种方法的时候需要设置窗口的属性。 this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框窗口(2)主窗体加载不了样式时需要在paintEvent事件中加上如下代码。{ QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); QWidget::paintEvent(event);}
设置按钮的背景边框
原始图
设置无边框或者背景透明可以去掉白色方框
给按钮设置如下样式即可。
{background-color:transparent;}
或者
{border:none;}
- Qt 中设置窗口边框的圆角
- Qt 之 设置窗口边框的圆角
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)
- Qt设置无边框窗口,窗口透明度
- 如何设置窗口圆角及边框
- QT入门:怎么写无边框(标题栏)的窗口、透明窗口、圆角控件
- QT入门:怎么写无边框(标题栏)的窗口、透明窗口、圆角控件
- qt 设置窗口圆角
- QT中设置窗口的图标
- 【引用】Qt中设置窗口的透明
- Qt 学习之旅 ----可移动的无边框圆角窗口
- Qt无边框背景图片的窗口
- qt 中窗口以及窗口部件背景图案的设置
- QT 窗口设置成无边框并实现拖动
- xib中设置控件的边框以及圆角
- xib中设置圆角,边框宽度,边框颜色等
- 在Qt中建立不显示标题栏、边框的的窗口
- xib 中设置圆角 边框
- 给开发人员培训时的语录
- 【深度学习笔记】个人阅读的Deep Learning方向的paper整理
- Java学习总结第二十一天Java集合概述
- 2017美团面试算法题
- Android安全攻防战,反编译与混淆技术完全解析(下)
- Qt 中设置窗口边框的圆角
- java.util.ConcurrentModificationException
- JS DOM.style.height 取不到的情况 为空的情况
- Java反射机制在Spring IOC中的应用
- SAP权限管理,我的理解
- vim多文件编辑,可视模式, 视图操作(4)
- 重入锁 ReentrantReadWriteLock
- Git常用命令总结
- 【深度学习笔记】多层感知机,非权值共享型卷积神经网络,权值共享型卷积神经网络之间的关系