【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.6 矩形、圆角矩形

news2024/11/24 1:01:29

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1mg411J7u5


本节讲解如何绘制矩形、圆角矩形

1. 相关的 API

直接查看官方的帮助文档,可以看到有多个重载的方法用于绘制矩形、圆角矩形

1.1 矩形

// 带 F 表示参数为浮点数,否则为整型数
void drawRect(const QRectF &rectangle)
void drawRect(const QRect &rectangle)

// 指定左上角的顶点,以及宽高
void drawRect(int x, int y, int width, int height)

1.2 圆角矩形

// 带 F 表示参数为浮点数,否则为整型数
void drawRoundedRect(const QRectF &rect, 
                     qreal xRadius, 
                     qreal yRadius, 
                     Qt::SizeMode mode = Qt::AbsoluteSize)
void drawRoundedRect(const QRect &rect, 
                     qreal xRadius, 
                     qreal yRadius, 
                     Qt::SizeMode mode = Qt::AbsoluteSize)
    
void drawRoundedRect(int x, int y, int w, int h, 
                     qreal xRadius, 
                     qreal yRadius, 
                     Qt::SizeMode mode = Qt::AbsoluteSize)

其中,最后一个参数为 Qt::SizeMode 类型的枚举,取值为:

  • Qt::AbsoluteSize xRadius 和 yRadius 为圆角大小
  • Qt::RelativeSize xRadius 和 yRadius 为圆角百分比

2. 具体实现

仍然使用上一节绘制点、线的那个数组

只需在 PaintWidget.cpppaintEvent 中添加如下代码即可:

void PaintWidget::paintEvent(QPaintEvent *event)
{
    // QRect(int left, int top, int width, int height)
    QRect rect(10, 20, 80, 60);

    for ( int x = 0; x < width(); x += 100 ) {
        for ( int y = 0; y < height(); y += 100 ) {
            ...
            switch ( mShape ) {
                // 矩形、椭圆
                case _Rect:
                    painter.drawRect(rect);
                    break;
                case _RoundedRect:
                    // 第四个参数是一个枚举类型,可指定为:AbsoluteSize 或 RelativeSize
                    // 当指定为AbsoluteSize,则2,3参数为圆角大小
                    // 当指定为RelativeSize,则2,3参数为圆角百分比
                    painter.drawRoundedRect(rect, 25, 25, Qt::RelativeSize);
                    break;
            }
            ...
        }
    }
}

最终绘制的多段线、多边形效果,如下:

image-20221208161649149

image-20221208161726134

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【电商】电商系统---合同管理

说一下合同管理部分&#xff0c;希望对大家有帮助&#xff0c;如果大家觉得简单可以直接略过&#xff0c;谢谢&#xff01; 合同分类 合同主要分为采购类合同、销售类合同、其他合同。 采购合同和销售合同分别与采购订单和销售订单建立对应关系&#xff0c;通过采购订单和销售…

ChatGDP:人类未来世界的主宰

先简单介绍一下今天的主角——ChatGPT。 ChatGPT是一款由OpenAI开发的聊天机器人&#xff0c;它具有出色的自然语言处理能力&#xff0c;能够与人类进行真实的对话。它的核心技术是GPT-3语言模型&#xff0c;能够自动学习语言特征&#xff0c;并进行语义理解、文本生成等任务。…

HCL与Pipe、Autoit和MobaXterm的组合使用

我们平时做实验一般会用到真机或者是模拟器&#xff0c;因为我主要接触的都是一些H3C的产品和技术&#xff0c;所以模拟器用HCL会多一些。为了呈现出相对好一些的视觉效果&#xff0c;我一般会使用MobaXterm工具进行命令操作&#xff0c;所以大家看到的回显一般是这样的&#x…

哈工大视听觉信号处理——听觉部分报告——一种智能家居命令词识别系统的设计

题 目 听觉部分 专 业 软件工程 学   号 120L0219XX 班   级 2037101 姓 名 李启明 报 告 日 期 2022.12.20 一、基频 &#xff08;一&#xff…

肝了一周总结的SpringBoot常用注解大全,一目了然~

平时使用SpringBoot开发项目&#xff0c;少不了要使用到它的注解。这些注解让我们摆脱了繁琐的传统Spring XML配置&#xff0c;让我们开发项目更加高效&#xff0c;今天我们就来聊聊SpringBoot中常用的注解&#xff01; SpringBoot实战电商项目mall&#xff08;50kstar&#xf…

《c专家编程》读书笔记

《c专家编程》第一章 C&#xff1a;穿越时空的迷雾第二章 这不是Bug&#xff0c;而是语言特性gets实验第三章 分析C语言的声明const实验第四章 令人震惊的事实&#xff1a;数组和指针并不相同指针与数组实验第五章 对链接的思考简单静态库动态库实验第六章 运动的诗章&#xff…

python-(6-5-3)爬虫---修改代码

文章目录一 事件背景二 系统给的代码三 改进措施四 改进后的代码一 事件背景 本篇主要是生活分享。 公司研究了一个比较好玩的人工智能狗&#xff0c;我就想偷懒让它帮我写个代码&#xff0c;得到的漂亮小姐姐的照片&#xff0c;然后它还真的给我把代码弄出来了。 二 系统给的…

​九州一轨通过注册:计划募资6.57亿 京投公司为大股东

雷递网 雷建平 12月19日北京九州一轨环境科技股份有限公司(简称&#xff1a;“九州一轨”&#xff09;日前通过注册&#xff0c;准备在科创板上市。九州一轨计划募资6.57亿元&#xff0c;其中&#xff0c;2.79亿元用于噪声与振动综合控制产研基地建设项目&#xff0c;1.43亿元用…

[附源码]计算机毕业设计Python飞越青少儿兴趣培训机构管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

我的一周年创作纪念日

机缘 第一次写文章的时候&#xff0c;CSDN还是我平时课程设计的救星&#xff1b;第一次写文章的时候&#xff0c;还不知道有什么拿得出手、可以和大家分享的&#xff1b;第一次写文章的时候&#xff0c;幻想着自己一觉醒来就坐拥10w粉丝&#xff0c;哈哈哈。感谢自己曾经冒出的…

【实践】推荐、搜索、广告多业务多场景统一预估引擎实践与思考

省时查报告-专业、及时、全面的行研报告库省时查方案-专业、及时、全面的营销策划方案库【免费下载】2022年11月份热门报告盘点《底层逻辑》高清配图‍基于深度学习的个性化推荐系统实时化改造与升级.pdf推荐技术在vivo互联网商业化业务中的实践.pdf推荐系统基本问题及系统优化…

元认知神经网络与在线序贯学习(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 文章包含用于实现自适应识别和控制的在线顺序学习算法、元认知神经网络和前馈神经网络的代码。这些方法也用于解决分类和时间序…

[附源码]计算机毕业设计Node.js仓库管理系统(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

【docker】CMD和ENTRYPOINT的区别

1、测试cmd #编写 dockerfile 文件 [rootkuangshen docekrfile]# vim dockerfile-cmd-test FROM centos CMD ["ls","-a"] #构建镜像 [rootkuangshen dockerfile]# docker build -f dockerfile-cmd-test -t cmdtest . #run运行&#xff0c;发现我们的ls -a …

你为什么一定要学Python?

我们为什么要学习Python&#xff1f; 在农业社会时&#xff0c;我们要学习驾驭马、驴、牛&#xff0c;让它们为我们出力、干活。 在工业社会时&#xff0c;我们要学会驾驭各种机器、火车、轮船、飞机、机床等等。 今天&#xff0c;我们要让机器听我们的指挥&#xff0c;我们就…

Python图像处理【5】图像扭曲/逆扭曲

图像扭曲/逆扭曲0. 前言1. 使用 scikit-image warp() 函数执行图像变换1.1 scikit-image warp() 函数原理1.2 利用 warp() 函数实现图像变换2. 漩涡变换详解2.1 旋涡变换原理2.2 使用 scikit-image warp() 实现旋涡变换2.3 使用 scipy.ndimage 实现漩涡变换3. 使用 scikit-imag…

3ds Max:加强型文本

3ds Max 中的加强型文本 TextPlus工具能够实现非常多的功能。在 3ds Max 中&#xff0c;加强型文本也是标准基本体。新建加强型文本后&#xff0c;可以看到其相关参数&#xff0c;在下方可以更改文本的内容外观。插值Interpolation步数Steps用来控制文本图形线段间的端点数&…

[附源码]计算机毕业设计Python高校流浪动物领养网站(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

MySQL基础操作汇总(干货)

数据库操作&#xff1a; 1)创建数据库&#xff1a;create database数据库名; 2)查看所有数据库&#xff1a;show databases; 3)选中指定数据库&#xff1a;use 数据库名; 4)删除数据库&#xff1a; drop database数据库名; 数据表操作 1)创建表&#xff1a;create table表…

Mycat(7):分片详解之枚举

1 分片思路 打开rule.xml 文件&#xff0c;找到对呀的分片规则&#xff0c;如&#xff1a;sharding-by-intfile 标签含义&#xff1a; columns:代表数据库里面的字段名 algorithm&#xff1a;分片算法 找到rule.xml文件中的hash-int分片算法地址&#xff0c;指向文件partition-…