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

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的具体枚举值,也可以继续提问。

http://www.cnnetsun.cn/news/433707.html

相关文章:

  • Windows Cleaner真的能解决C盘爆满问题吗?5个实用技巧告诉你答案
  • 城市“呼吸诊断师”:高精度AI气象如何实时监测3000栋建筑的能耗异常与健康风险,提前预警空调系统故障?
  • Jasminum插件深度优化:5个技巧让元数据抓取速度翻倍
  • 基于springboot + vue科研管理系统(源码+数据库+文档)
  • 对象存储OSS保存海量用户生成音频并提供持久化访问链接
  • Zotero文献库智能去重:一键清理重复条目的高效解决方案
  • 基于java+ vue科研管理系统(源码+数据库+文档)
  • 吐血推荐MBA必看!10个AI论文平台深度测评
  • NBTExplorer完整指南:轻松玩转Minecraft数据编辑
  • Python爬虫实战:使用异步技术与AI解析构建淘宝商品价格监控系统
  • 坚守内核,拥抱变量:我的 2025 年终复盘与 2026 展望
  • Zotero插件商店终极指南:一站式学术插件管理平台
  • Windows Cleaner终极指南:彻底解决C盘空间不足问题
  • Xbox成就解锁新纪元:智能工具重塑你的游戏档案
  • 动手落地AI:我的第一个四行代码构建RAG应用
  • League Director终极指南:免费打造专业级《英雄联盟》高光集锦
  • iOS个性化定制新纪元:Cowabunga Lite全面指南
  • MobaXterm、Xshell 已过时?开源、跨平台的可视化终端管理神器来了!一站式搞定 SSH、Docker、K8s、VMware、Proxmox等所有连接
  • 在‘dvwa’渗透测试教学中加入IndexTTS API防护案例
  • ssm基于springboot 的体育用品商城多商家vue
  • ComfyUI-Manager终极下载加速指南:告别模型下载等待烦恼
  • BBDown:轻松下载B站视频的终极解决方案
  • 游戏模组管理完整教程:从零开始掌握MOD启动器
  • FreeMove磁盘空间优化神器:彻底解决C盘爆满难题
  • Windows 11任务栏透明终极解决方案:快速修复TranslucentTB兼容性问题
  • 围棋AI分析工具LizzieYzy:多引擎图形界面完全指南
  • 深度解析LizzieYzy:围棋AI多引擎分析工具的实战进阶指南
  • 基于YOLOv8的道路坑洼检测系统(YOLOv8深度学习+YOLO数据集+UI界面+Python项目源码+模型)
  • 游戏性能优化技术指南:帧率解锁的完整解决方案
  • 基于YOLOv8的苹果成熟度检测系统(YOLOv8深度学习+YOLO数据集+UI界面+Python项目源码+模型)