news 2026/3/25 7:48:08

QPen 成员构成

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QPen 成员构成

QPen是 Qt 框架中用于定义线条绘制样式的类,主要配合QPainter使用,控制所绘图形轮廓(如线条、多边形边框等)的外观。其成员构成可分为以下几个方面:


一、核心属性(可通过 getter/setter 访问)

属性获取函数设置函数说明
颜色color()setColor(const QColor &)实际上是笔刷(brush)的颜色快捷方式
笔刷brush()setBrush(const QBrush &)控制线条填充内容(支持渐变、纹理等)
线宽width()/widthF()setWidth(int)/setWidthF(qreal)整数或浮点精度的线宽;0 表示“ cosmetic pen”(始终 1 像素)
线型style()setStyle(Qt::PenStyle)Qt::SolidLine,Qt::DashLine,Qt::DotLine,Qt::CustomDashLine
端点样式capStyle()setCapStyle(Qt::PenCapStyle)Qt::FlatCap,Qt::SquareCap,Qt::RoundCap
连接样式joinStyle()setJoinStyle(Qt::PenJoinStyle)Qt::BevelJoin,Qt::MiterJoin,Qt::RoundJoin
斜接限制miterLimit()setMiterLimit(qreal)控制Qt::MiterJoin的最大长度
虚线偏移dashOffset()setDashOffset(qreal)自定义虚线起始偏移量
虚线模式dashPattern()setDashPattern(const QList<qreal> &)定义交替的“划-空”序列(单位为线宽)
是否为 Cosmetic PenisCosmetic()setCosmetic(bool)若为 true,则线宽不受变换(如缩放)影响

二、构造函数

QPen(); // 默认:黑色、宽度1、实线、SquareCap、BevelJoin QPen(Qt::PenStyle style); QPen(const QColor &color); QPen(const QBrush &brush, qreal width, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin); QPen(const QPen &pen); // 拷贝构造 QPen(QPen &&pen); // 移动构造(C++11)

三、其他成员函数

  • bool isSolid() const:判断是否为实线(非虚线/点线等)
  • void swap(QPen &other):高效交换两个QPen对象
  • operator QVariant() const:支持转换为QVariant
  • 比较运算符:operator==,operator!=
  • 赋值运算符(包括 C++23/Qt6.9 新增的):
    • operator=(QColor)
    • operator=(Qt::PenStyle)

四、相关非成员函数(用于序列化)

QDataStream &operator<<(QDataStream &stream, const QPen &pen); QDataStream &operator>>(QDataStream &stream, QPen &pen);

五、默认值总结

  • 颜色:黑色(Qt::black
  • 宽度:1
  • 样式Qt::SolidLine
  • 端点样式Qt::SquareCap
  • 连接样式Qt::BevelJoin
  • 笔刷:纯色黑色(与颜色一致)
  • Cosmetic:false(但宽度为 0 时行为等效于 cosmetic)

六、使用示例

QPainter painter(this); QPen pen(Qt::red, 2, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen); painter.drawLine(10, 10, 100, 100);

或分步设置:

QPen pen; pen.setColor(Qt::blue); pen.setWidth(3); pen.setStyle(Qt::DotLine); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::MiterJoin); painter.setPen(pen);

如需进一步了解Qt::PenStyleQt::PenCapStyleQt::PenJoinStyle的具体枚举值,也可以继续提问。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 11:31:27

群智能优化WSN定位算法【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅ 具体问题扫描文章底部二维码。&#xff08;1&#xff09;混合策略秃鹰搜索算法&#xff08;HBES&#xff09;的提出与改进 针对无线传感…

作者头像 李华
网站建设 2026/3/24 6:20:07

如何快速掌握RimSort:环世界模组管理完整教程

如何快速掌握RimSort&#xff1a;环世界模组管理完整教程 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 还在为《环世界》模组冲突和加载顺序烦恼吗&#xff1f;RimSort作为一款专业的开源模组管理工具&#xff0c;能够彻底解决这些困…

作者头像 李华
网站建设 2026/3/24 18:39:04

扔掉笨重的XXL-JOB?试试这个基于Nacos的优雅调度方案

来源&#xff1a;juejin.cn/post/7583469866007969827&#x1f449; 欢迎加入小哈的星球&#xff0c;你将获得: 专属的项目实战&#xff08;多个项目&#xff09; / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论新项目&#xff1a;《Spring AI 项目实战》正在更…

作者头像 李华
网站建设 2026/3/24 17:04:16

基于java+ vue智能垃圾分类系统(源码+数据库+文档)

智能垃圾分类系统 目录 基于springboot vue智能垃圾分类系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue智能垃圾分类系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/3/14 21:27:31

5分钟快速上手:让OneNote效率倍增的OneMore插件指南

OneMore是一款专为OneNote设计的强大增强插件&#xff0c;通过简洁实用的功能模块&#xff0c;彻底改变你的笔记管理方式。无论你是学生、职场人士还是学术研究者&#xff0c;这款插件都能让你的笔记工作流程更加流畅高效。 【免费下载链接】OneMore A OneNote add-in with sim…

作者头像 李华