QT:圆角设置
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 之 设置窗口边框的圆角
相关文章
- python qt是什么_初识Python与Qt「建议收藏」
- Qt: 中文-常量中有换行符[通俗易懂]
- Qt-QCustomplot画静态、动态曲线教程图解
- QT多线程实战_Qt多线程开发项目
- C/C++ Qt 使用JSON解析库 [修改篇]
- C/C++ Qt 标准Dialog对话框组件应用
- QT入门基础(二)
- Qt官方示例-BT客户端
- 如何查看项目中使用的Qt版本
- Qt官方示例-Qml系统对话框
- Linux系统使用Qt开发快速入门教程(linux下qt教程)
- 使用 Qt 连接远程 MySQL 数据库(qt连接远程mysql)
- 如何在Linux系统中安装Qt开发环境(linux下qt安装教程)
- 使用Qt快速设置Linux时间(qt设置linux时间)
- Qt Creator使用教程(简明版)
- 使用Qt在Linux下执行命令(qt执行linux命令)
- linux下qt桌面环境开发实践(linuxqt桌面)
- 安装Linux系统,学习QT开发技术(linux安装qt教程)
- Linux编译Qt库:从零开始(linux编译qt库)
- 跨平台应用使用Qt开发Linux跨平台应用(qt开发linux)
- Qt 静态编译在 Linux 的实践(qt静态编译linux)
- Linux下构建Qt程序步骤(linux打开qt)
- 开发Linux下 Qt开发:从入门到精通.(linux下的qt)
- 「零基础入门」Linux下安装QT教程,助力程序员成为高手!(linux下安装qt教程)
- Linux 下 Qt 安装教程(qt安装教程linux)
- 入门Linux下Qt编程,掌握技巧!(linux下qt编程入门)
- QT快速连接MSSQL数据库,轻松搞定!(QT链接mssql)
- Qt技术与SQLServer的完美结合(qt与sqlserver)
- MySQL与Qt的无缝连接(mysql 连接qt)
- Linux下安装Qt操作指南(linux下怎么安装qt)