news 2026/6/10 16:50:43

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/6/10 12:57:37

R语言聚类分析完全指南(从入门到精通的十大关键技巧)

第一章&#xff1a;R语言聚类分析概述聚类分析是一种无监督学习方法&#xff0c;旨在将数据集中的对象划分为若干个有意义的群组&#xff0c;使得同一群组内的对象相似度较高&#xff0c;而不同群组间的相似度较低。在R语言中&#xff0c;聚类分析被广泛应用于生物信息学、市场…

作者头像 李华
网站建设 2026/6/10 0:24:21

借助‘c#’开发者社区推广IndexTTS .NET封装库

借助 C# 开发者社区推广 IndexTTS .NET 封装库 在短视频、虚拟主播和智能语音助手迅速崛起的今天&#xff0c;内容创作者对语音合成&#xff08;TTS&#xff09;的需求早已不再满足于“能说话”。他们需要的是自然如真人、情绪可控制、音色能定制、时长可对齐画面的高质量语音输…

作者头像 李华
网站建设 2026/6/10 15:04:13

设计‘Canva模板’配套IndexTTS语音解说用于课件制作

设计“Canva模板”配套IndexTTS语音解说用于课件制作 在数字内容爆炸式增长的今天&#xff0c;教育者和知识创作者正面临一个共同挑战&#xff1a;如何在有限时间内&#xff0c;高效产出既专业又富有感染力的教学视频&#xff1f;传统方式中&#xff0c;录制配音耗时费力&#…

作者头像 李华
网站建设 2026/6/10 15:05:15

3分钟掌握NBTExplorer:Minecraft数据编辑的终极解决方案

3分钟掌握NBTExplorer&#xff1a;Minecraft数据编辑的终极解决方案 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 还在为复杂的Minecraft存档修改而头疼吗&#…

作者头像 李华
网站建设 2026/6/9 20:59:45

如何部署IndexTTS 2.0本地环境?GPU算力需求与推理优化建议

如何部署 IndexTTS 2.0 本地环境&#xff1f;GPU 算力需求与推理优化建议 在短视频、虚拟人和 AI 配音爆发的今天&#xff0c;内容创作者越来越需要一种既能“像真人”又能“听指挥”的语音合成工具。传统的 TTS 模型要么声音机械&#xff0c;要么调整成本高——改个语速要重新…

作者头像 李华
网站建设 2026/6/9 21:42:59

GetQzonehistory终极指南:3步轻松备份QQ空间所有历史数据

想要永久保存QQ空间里那些珍贵的青春记忆吗&#xff1f;GetQzonehistory这款强大的开源工具能够帮你一键导出所有历史说说、转发内容和留言记录&#xff0c;让数字记忆永不丢失。无论是怀旧重温还是数据安全备份&#xff0c;这款工具都能成为你最可靠的数字管家&#xff0c;快速…

作者头像 李华