这个函数文档的意思就是画弧,看了文档也不太明白,自己做了demo终于明白了意思

移动到圆心,画180度半圆

void TestArcTo::paintEvent(QPaintEvent *)
{
QPoint startPt(, );
QRect rect(startPt.x(), startPt.y(), , );
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing); //抗锯齿
p.fillRect(rect, QColor(, , )); int arcR = rect.width()/;
int rectSize = rect.width();
QPainterPath path; path.moveTo(startPt.x() + arcR, startPt.y() + arcR); //先移动到圆心
path.arcTo(rect, 00.0f, 180.0f); //以0度起点,逆时针画180度 p.fillPath(path, QBrush(QColor(, , )));
}

移动到圆心,以90度开始画180度半圆

path.moveTo(startPt.x() + arcR, startPt.y() + arcR); //先移动到圆心
path.arcTo(rect, 90.0f, 180.0f); //以0度起点,逆时针画180度

移动到圆心,以190度开始画180度半圆

path.moveTo(startPt.x() + arcR, startPt.y() + arcR); //先移动到圆心
path.arcTo(rect, 90.0f, 180.0f); //以0度起点,逆时针画180度

移动到某个点可以画弦月

几个点组合

矩形区圆角

void TestArcTo::paintEvent(QPaintEvent *)
{
QRect rect(, , , );
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing);
p.fillRect(rect, QColor(, , )); int cornerSize = ; //调节圆角的大小
int arcR = cornerSize/;
QPainterPath path;
path.moveTo(rect.left() + arcR, rect.top());
path.arcTo(rect.left(), rect.top(), cornerSize, cornerSize, 90.0f, 90.0f); path.lineTo(rect.left(), rect.bottom() - arcR);
path.arcTo(rect.left(), rect.bottom() - cornerSize, cornerSize, cornerSize, 180.0f, 90.0f); path.lineTo(rect.right() - arcR, rect.bottom());
path.arcTo(rect.right() - cornerSize, rect.bottom() - cornerSize, cornerSize, cornerSize, 270.0f, 90.0f); path.lineTo(rect.right(), rect.top() + arcR);
path.arcTo(rect.right() - cornerSize, rect.top(), cornerSize, cornerSize, 0.0f, 90.0f); p.fillPath(path, QBrush(QColor(, , )));
}

底部和右边有黄色边框需要处理,这就需要+1, -1微调了。理解了arcTo函数,都不难处理。

最方便的圆角方法

void TestArcTo::paintEvent(QPaintEvent *)
{
QRect rect(, , , );
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing);
p.fillRect(rect, QColor(, , )); p.setPen(Qt::NoPen);
p.setBrush(QColor(, , ));
p.drawRoundedRect(rect, , );
}

关于QT的QPainterPath::arcTo 详解的更多相关文章

  1. Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例)

    1.Why 最近在写android画图经常用到这几个什么什么To,一开始还真不知道cubicTo这个方法,更不用说能不能分清楚它们了,所以特此来做个小笔记,记录下moveTo.lineTo.quadT ...

  2. QT中的qmake详解

    关于qmake,好一段时间令我一头雾水,不知道用来干嘛的,只知道怎么用,而且也只懂那么一两个命令,详细看过资料以后整理如下: 1.首先,感性的认识是,qmake可以利用源文件(包括头文件h,实现文件c ...

  3. Qt 之 pro 配置详解

    原文地址:https://blog.csdn.net/liang19890820/article/details/51774724 简述 使用Qt的时候,我们经常会对pro进行一系列繁琐的配置,为方便 ...

  4. Qt之pro配置详解

    简述 使用Qt的时候,我们经常会对pro进行一系列繁琐的配置,为方便大家理解.查找,现将常用的配置进行整理. 简述 配置 注释 CONFIG DEFINES DEPENDPATH DESTDIR FO ...

  5. Qt样式表——选择器详解(父子关系)

    在上一节中,小豆君给大家介绍了样式表的基本概念和大致用法.今天我们来详细了解下样式表中选择器的用法. 所谓选择器,就是指定你所设置的样式对哪个或哪些控件起作用. 到目前为止,Qt样式表支持CSS2中定 ...

  6. Qt *.pro工程文件 详解

    先介绍一下QT中关于项目的相关介绍 app - 建立一个应用程序的makefile.这是默认值,所以如果模板没有被指定,这个将被使用. lib - 建立一个库的makefile. vcapp - 建立 ...

  7. PyQt学习随笔:Qt事件类QEvent详解

    QEvent类是PyQt5.QtCore中定义的事件处理的基类,事件对象包含了事件对应的参数. <Python & PyQt学习随笔:PyQt主程序的基本框架>介绍了PyQt程序通 ...

  8. Qt多窗口编程详解

    常用的窗体基类是 QWidget.QDialog 和 QMainWindow,在创建 GUI 应用程序时选择窗体基类就是从这 3 个类中选择. QWidget 直接继承于 QObject,是 QDia ...

  9. Qt 项目管理文件(.pro) 详解

    项目文件目录树 在 Qt Creator 中新建一个 Widget Application 项目 samp2_1,在选择窗口基类的页面选择 QWidget 作为窗体基类,并选中"Genera ...

随机推荐

  1. html select 和dropdownlist小结收集

    //html select var x = $("#selectSort").val();  //获取选中的value值 获取select选中的索引: $("#selec ...

  2. Apache-Shiro介绍

    Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络 ...

  3. BinarySearch

    今天看代码,看到这么一段,开始没有看明白,记录下来备忘 foreach (FinancialReport r3 in addAorList)            {                i ...

  4. mybatis打印sql日志配置

    <settings> <!-- 打印查询语句 --> <setting name="logImpl" value="STDOUT_LOGGI ...

  5. Python 为什么要用yield

    可能听说过,带有 yield 的函数在 Python 中被称之为 generator(生成器),何谓 generator ?我们先抛开 generator,以一个常见的编程题目来展示 yield 的概 ...

  6. linux常用命令:less 命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...

  7. C++中公有继承、保护继承、私有继承的区别

    公有继承时基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的publ ...

  8. troubleshooting-执行导数shell脚本抛异常error=2, No such file or directory

    Cannot run program "order_log.sh" (in directory "/data/yarn/nm/usercache/chenweidong/ ...

  9. 04: Mysql性能优化

    MySQL其他篇 目录: 参考网站 1.1 Mysql数据库的优化技术 1.2 数据库表设计 1.3 SQL优化 1.为查询缓存优化你的查询 2.EXPLAIN 你的 SELECT 查询 3. 当只要 ...

  10. 20145317 网络对抗技术 逆向与Bof基础

    20145317 网络对抗技术 逆向与Bof基础 实践要求 1. 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 2. 掌握反汇编与十六进制编程器 3. 能正确修改机器指令改变程序执行流程 ...