news 2026/4/23 5:03:13

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/4/23 13:09:14

手把手教你 5 分钟打造属于自己的AI编程智能体!

一、当前编程模式的痛点unsetunset作为一名长期使用 AI 辅助编程的开发者&#xff0c;我发现了一个普遍存在的问题&#xff1a;1.1 传统 AI 对话的局限性除了使用 cursor、Trae、codebuddy 等工具外&#xff0c;在编程环节每次向 ChatGPT、Claude 等 AI 寻求编程帮助时&#xf…

作者头像 李华
网站建设 2026/4/23 13:09:13

NBTExplorer完全指南:零基础学会Minecraft数据可视化编辑

NBTExplorer完全指南&#xff1a;零基础学会Minecraft数据可视化编辑 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 还在为复杂的Minecraft数据编辑而烦恼吗&…

作者头像 李华
网站建设 2026/4/23 13:05:55

实现‘新闻快讯播报’分钟级响应重大事件语音推送

实现“新闻快讯播报”分钟级响应重大事件语音推送 在突发地震、金融政策突变或重大公共安全事件发生的瞬间&#xff0c;信息的传播速度往往决定了公众的反应效率。传统媒体从记者采编到主播配音&#xff0c;通常需要数小时甚至更久&#xff1b;而如今&#xff0c;用户期望的是“…

作者头像 李华
网站建设 2026/4/23 15:28:24

构建‘演讲稿练习伴侣’模拟观众反应语音给予反馈

构建“演讲稿练习伴侣”&#xff1a;用AI模拟观众反应&#xff0c;实现拟人化语音反馈 在准备一场重要演讲时&#xff0c;最令人焦虑的往往不是内容本身&#xff0c;而是面对真实观众时那种无法预演的紧张感——你会担心语速太快、停顿不当&#xff0c;或是讲到关键点时台下一片…

作者头像 李华
网站建设 2026/4/16 1:23:53

AI网络技术演进对路由协议的重塑分析(上)

摘要 随着人工智能计算规模的指数级增长&#xff0c;传统网络架构在支撑大规模分布式训练时面临严峻挑战。本文系统分析了AI网络技术演进对路由协议产生的深刻重塑作用&#xff0c;从底层技术架构变革、核心协议算法演进、行业实践案例、标准化进展及未来趋势等多个维度展开深入…

作者头像 李华
网站建设 2026/4/23 10:48:58

RimSort:环世界模组管理的革命性解决方案

RimSort&#xff1a;环世界模组管理的革命性解决方案 【免费下载链接】RimSort 项目地址: https://gitcode.com/gh_mirrors/ri/RimSort 还在为《环世界》模组加载顺序烦恼吗&#xff1f;RimSort作为一款开源跨平台模组管理器&#xff0c;彻底改变了传统模组管理方式&am…

作者头像 李华