当前位置: 首页 > news >正文

1.实用Qt:解决绘制圆角边框时,圆角锯齿问题

目录

问题描述

解决方案

方案1:

方案2:

结果示意图


问题描述

做UI的时候,我们很多时候需要给绘制一个圆角边框,初识Qt绘制的童鞋,可能绘制出来的圆角边框很是锯齿,而且粗细不均匀,如下图:
 

解决方案

方案1:

给目标widget添加margin,且paintEvent中的绘制区域用contentsRect:

CustomWidget::NKCustomWidget(QWidget *parent): QWidget(parent)
{m_dWidth = 5.0;setContentsMargins(1.0, 1.0, 1.0, 1.0);
}void CustomWidget::paintEvent(QPaintEvent *event)
{QPainter paint(this);paint.setRenderHints(QPainter::Antialiasing);QPainterPath pathBorder;QRectF rcFrame = contentsRect();QRectF rcBoder = rcFrame;pathBorder.addRoundedRect(rcBoder, 24, 24);QPen pen(Qt::red, m_dWidth);paint.setPen(pen);paint.drawPath(pathBorder);
}

方案2:

将绘制区域缩小边框宽度的像素范围

参考代码:
 


void NKCustomWidget::paintEvent(QPaintEvent *event)
{QPainter paint(this);paint.setRenderHints(QPainter::Antialiasing);QPainterPath pathBorder;QRectF rcFrame = contentsRect();QRectF rcBoder = rcFrame.marginsRemoved(QMarginsF(m_dWidth/2, m_dWidth/2, m_dWidth/2, m_dWidth/2));pathBorder.addRoundedRect(rcBoder, 24, 24);QPen pen(Qt::red, m_dWidth);paint.setPen(pen);paint.drawPath(pathBorder);
}

结果示意图

http://www.lryc.cn/news/319912.html

相关文章:

  • JavaWeb08-Filter和Listener
  • 关于ClickHouse的一些小技巧
  • 有来团队后台项目-解析7
  • 用户数据的FLASH存储与应用(FPGA架构)
  • Chrome的V8引擎 和操作系统交互介绍
  • Redis:持久化、线程模型、大 key
  • Linux 16个常用脚本(初级)练习
  • 接口测试及接口测试工具【Postman】相关的面试题
  • android 怎么自定义view
  • JavaScript的事件
  • android 简单快速 自定义dialog(简单好用,不需要设置样式)
  • JAVA代理模式梳理
  • 推荐几个线上兼职,每天两小时收入几十到一百
  • excel封装和ddt D17
  • PHP8编译安装
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering(慢慢啃,还是挺复杂的)
  • 二叉树<II>:二叉树的四种遍历方式代码实现Python3
  • vite ts vue 项目提示 . Projects must list all files or use an include pattern.
  • 鲸鱼优化算法改进风储机组一次调频出力分配系数,以频率偏差最小为目标优化函数,结合鲸鱼算法WOA捕食过程,改进风储出力分配系数simulink与matlab联合
  • C语言经典面试题目(七)
  • 2024华为春招Django面试题大全,最全知识点揭秘,面试必备!
  • 搜维尔科技:使用SenseGlove Nova手套操纵其“CAVE”投影室中的虚拟对象
  • 独立服务器的优势
  • 前端框架vue的样式操作,以及vue提供的属性功能应用实战
  • 【自动化测试】如何在jenkins中搭建allure
  • 2.域控如何强制转移操作主机角色?使用命令如何强制转移域控的操作角色?
  • C# event的使用
  • 外包干了9天,技术退步明显。。。。。
  • Android Framework 之 Python
  • 【Fitten Code】“吊打“Github Copilot的国内免费代码辅助插件