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

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.kler.cn/a/271702.html

相关文章:

  • Chrome浏览器编译系统研究与优化分析
  • HarmonyOS应用开发快速入门
  • shell脚本
  • 【性能优化专题系列】利用CompletableFuture优化多接口调用场景下的性能
  • DeepSeek大模型技术解析:从架构到应用的全面探索
  • MYSQL 商城系统设计 商品数据表的设计 商品 商品类别 商品选项卡 多表查询
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:GridItem)
  • SQL注入无回显,利用DNSlog构造方式
  • 力扣-3. 无重复字符的最长子串
  • Vue+SpringBoot打造康复中心管理系统
  • Pandas中高效选择和替换操作总结
  • Kubernetes operator系列:webhook 知识学习
  • PHP8编译安装
  • RequestResponse案例
  • 【JVM】生产内存占用异常优化 (一)
  • 前端跨平台开发框架:简化多端开发的利器
  • 一文总结python的异常数据处理示例
  • Python实战:Matplotlib绘图基础与实践
  • 科研绘图一:箱线图(添加贝赛尔曲线)
  • Android Studio字体大小调节
  • 记录对NSIS的一些微调 实现Electron安装包美化
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Rating)
  • 数据结构 之 树
  • SSA-LSTM多输入分类预测 | 樽海鞘优化算法-长短期神经网络 | Matlab
  • 2024.3.17每日一题
  • 【C语言】关于字符的一些实用函数