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中设置窗口边框的圆形相关推荐

  1. Qt 之 设置窗口边框的圆角

    Qt技术学习班开始了,更多精彩.好玩的内容等着你,赶紧报名吧! 群号:655815739 Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述 ...

  2. qt中设置窗口左上角的图标

    前面一节已经详细的讲解了怎么添加图片到qt的图片资源文件中,这里就不赘述了,不太了解的可以看看博主的这篇随笔:qt中建立图片资源管理文件 this->setWindowIcon(QIcon(&q ...

  3. QT中关于窗口全屏显示与退出全屏的实现

    近期在学习QT时遇到了很多问题这也是其中一个,个人通过在各种书籍和网络上的查阅找到了一些关于这方面的答案,希望能给大家一些帮助. 首先,在QT中对于窗口显示常用的有这么几个方法可以调用: Qt全屏显示 ...

  4. 在Word2007文档中设置页面边框

    用户可以在Word2007文档中设置普通的线型页面边框和各种图标样式的艺术型页面边框,使Word2007文档更富有表现力.在Word2007文档中设置页面边框的步骤如下所述: 1.打开Word2007 ...

  5. 计算机页面边框怎么设置,[计算机]在Word2003文档中设置页面边框.doc

    [计算机]在Word2003文档中设置页面边框.doc 上传人:max****ui 文档编号:14044395 上传时间:2019-01-31 格式:DOC 页数:4 大小:319.68KB 下载提示 ...

  6. QT使用html改变字体颜色,QT中设置字体和更改字体颜色

    QT中设置字体和更改字体颜色 对一个文本框lineEdit设置字体,首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont,将setFontButton添加到布局中, ...

  7. 在Qt中设置程序图标的方法介绍

    本文主要介绍在 Qt 中设置程序图标的方法. 说明: 本文中的应用程序是面向 Windows 操作系统的: 本文中使用的 Qt Creator 版本号为:7.0.0: 本文中使用的 Qt 版本号为:5 ...

  8. QT中设置字体和更改字体颜色

    QT中设置字体和更改字体颜色 对一个文本框lineEdit设置字体,首先我建了一个按钮setFontButton用来设置 并定义了它的相应函数setFont,将setFontButton添加到布局中, ...

  9. 在Qt中设置鼠标光标形状的方法介绍

    本文主要介绍在 Qt 中设置鼠标光标形状的方法. 说明: 本文中的应用程序是面向 Windows 操作系统的: 本文中使用的 Qt Creator 版本号为:7.0.0: 本文中使用的 Qt 版本号为 ...

最新文章

  1. 继智能手机之后,增强现实如何再次改变我们与世界的交互方式
  2. java int越界_用位运算判断int类型变量越界
  3. 关于server 2008 r2中文版安装多国语言用户界面包(英文)
  4. 【XAuido2】播放wav和ogg格式音频文件
  5. 汇编-子程序参数传递的三种方式-寄存器法,堆栈法,参数赋值法【详述后两者】
  6. 如何获取元素在父级div里的位置_关于元素的浮动你了解多少
  7. C++:38---final关键字和禁止类继承
  8. LeetCode 797. 所有可能的路径(DFS)
  9. Google菜市场(Android Market)上不去的解决方法
  10. linux中 ls |wc -l
  11. tomcat默认密码,admin,manager密码需要自己设置,tomcat-users.xml
  12. 权限判断 java_一个简单的关于权限判断登陆的javaBean文件
  13. flask v0.1 项目工程
  14. 人穷的时候,最看不起自己的是谁?
  15. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(11)-系统日志和异常的处理①...
  16. 详解面试手撕过的那些排序算法
  17. 2.微服务:从设计到部署 --- 使用 API 网关
  18. meshlab调整平行光源
  19. 直播绿幕抠图的例子(绿幕抠图直播实例参考)
  20. iOS 关于iTMSTransporter上传IPA报错问题

热门文章

  1. [架构之路-119]-《软考-系统架构设计师》-计算机体系结构 -1- 基本原理(体系结构、指令系统与流水线、层次存储)
  2. Typescript函数和类的使用
  3. 由浅入深!原来SqlSession只是个甩手掌柜?分享面经
  4. 原生安卓开发app的框架frida常用关键代码定位
  5. [悦读简报] 2021年1月5日,星期二,农历十一月二十二
  6. 卯兔迎春,万象惊喜!
  7. 【并查集专题】格子游戏
  8. Android 如何设置应用不显示桌面图标,不显示后台运行
  9. Python中的文件处理
  10. wps打开共享文件时提示另一用户正在编辑中