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

QLabel设置富文本,过长用省略号显示的方法

目录1.背景2.QFontMetrics2.1.基本介绍2.2.核心方法2.3.使用注意3.解决方法3.1.简单方案固定汉字数量截断超过 N 字显示…3.2.推荐方案按 Label 宽度自动省略更美观1.背景QLabel 设置 ** 富文本HTML** 时原生的setElideMode会失效无法像纯文本那样自动显示省略号同时汉字是可变宽度不能单纯按固定字数判断更合理的是按「控件宽度」自动截断。2.QFontMetricsQFontMetrics是 Qt 中计算字体渲染实际尺寸的核心类用来精准获取文本 / 字符在屏幕上的像素宽度、高度、行间距、省略文本等解决「文本过长显示省略号」「文本居中 / 对齐」「自适应布局」等 UI 文本问题。它基于具体字体 字号 屏幕 DPI计算不是按字符数估算结果是实际渲染像素值这也是它比「固定字数截断」更精准的原因。2.1.基本介绍1.作用计算指定字体下单个字符 / 整段文本的宽度、高度文本行高、基线、间距文本超出宽度时自动生成带省略号的文本文本占据的矩形区域2.构造方式// 1. 从指定字体构造 QFont font(Microsoft YaHei, 12); QFontMetrics fm(font); // 2. 直接用控件的字体最常用 QFontMetrics fm(ui-label-font()); // 3. 高分屏/浮点精度推荐高DPI屏幕使用 QFontMetricsF fmf(ui-label-font());3.QFontMetrics vs QFontMetricsFQFontMetrics整数像素普通屏幕够用QFontMetricsF浮点精度高分屏2K/4K/Retina必须用避免尺寸偏差2.2.核心方法1.文本宽度计算最常用int width(const QString text) const计算文本渲染后的实际像素宽度自动区分汉字、英文、符号宽度不同。QString text 你好Qt123; int w fm.width(text); // 得到该文本实际占多少像素QRect boundingRect(const QString text) const返回文本渲染后占据的矩形区域x/y/ 宽 / 高。QRect rect fm.boundingRect(测试文本); int textWidth rect.width(); int textHeight rect.height();2.自动省略超长文本QString elidedText( const QString text, Qt::TextElideMode mode, int width, int flags 0 ) const自动截断文本并添加省略号是 QLabel 省略显示的核心方法。参数说明text原始文本mode省略位置Qt::ElideRight末尾省略最常用如「文本太长…」Qt::ElideLeft开头省略… 本太长Qt::ElideMiddle中间省略文… 长Qt::ElideNone不省略width允许的最大像素宽度flags文本标志默认 0 即可单行文本使用示例QString rawText 这是一段非常非常长的需要显示省略号的文本; // 最大宽度200px末尾加省略号 QString elided fm.elidedText(rawText, Qt::ElideRight, 200); ui-label-setText(elided);3.字体行高 / 高度相关①int height() const字体总高度字符最高点到最低点。②int lineSpacing() const推荐行高换行后两行文本的间距。③int ascent() const基线到字符顶部的距离。④int descent() const基线到字符底部的距离如 g、y 的下延部分。int h fm.height(); // 字体总高度 int spacing fm.lineSpacing(); // 行间距4.字符基础尺寸int minWidth()字体中最窄字符宽度int maxWidth()字体中最宽字符宽度int charWidth(QChar ch)单个字符的宽度2.3.使用注意1.宽度≠字符数汉字≈2 个英文字符宽度不同字体 / 字号宽度不同绝对不能用字符数代替像素宽度。2.控件宽度要留边距计算时用label-width() - 间距否则会紧贴边框。int maxW ui-label-width() - 4; // 左右各留2px边距3.富文本必须先转纯文本HTML 标签不占渲染宽度需先去除标签再计算QString plain richText.remove(QRegularExpression([^]));4.控件大小变化时重算窗口拉伸后 label 宽度改变需在resizeEvent中重新计算省略文本。3.解决方法3.1.简单方案固定汉字数量截断超过 N 字显示…适合你明确要限制多少个汉字的场景直接判断长度后拼接省略号再套富文本。#include QLabel #include QString // 示例超过20个汉字就截断省略号 QString richText span stylecolor:red; font-size:14px;这里是很长的富文本内容.../span; // 提取纯文本长度去掉HTML标签 QString plainText richText.remove(QRegularExpression([^])); const int maxLen 20; if (plainText.length() maxLen) { // 截断后加省略号 QString showText plainText.left(maxLen) ...; // 重新包装成富文本 ui-label-setText(QString(span stylecolor:red; font-size:14px;%1/span).arg(showText)); } else { ui-label-setText(richText); }3.2.推荐方案按 Label 宽度自动省略更美观#include QFontMetrics #include QRegularExpression // 通用设置带省略号的富文本 void setElidedLabel(QLabel *label, const QString richText) { if(!label) return; // 1. 关闭换行 label-setWordWrap(false); // 2. 提取纯文本 QString plain richText.remove(QRegularExpression([^])); // 3. 计算最大宽度减去边距 QFontMetrics fm(label-font()); int maxWidth label-width() - 4; // 4. 生成省略文本 QString elided fm.elidedText(plain, Qt::ElideRight, maxWidth); // 5. 重新套回富文本样式 label-setText(QString(span stylecolor:#333;%1/span).arg(elided)); } // 窗口/控件resize时调用适配宽度变化 void Widget::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); setElidedLabel(ui-label, b超长富文本内容测试/b); }关键说明1.原生不支持原因Qt::ElideRight只对纯文本生效一旦用setTextFormat(Qt::RichText)或传入 HTML省略号自动失效。2.单行显示前提记得关闭换行label-setWordWrap(false); label-setAlignment(Qt::AlignLeft | Qt::AlignVCenter);

相关文章:

QLabel设置富文本,过长用省略号显示的方法

目录 1.背景 2.QFontMetrics 2.1.基本介绍 2.2.核心方法 2.3.使用注意 3.解决方法 3.1.简单方案:固定汉字数量截断(超过 N 字显示…) 3.2.推荐方案:按 Label 宽度自动省略(更美观) 1.背景 QLabel 设…...

Oracle APEX工作流状态变更

Oracle APEX工作流状态变更工作流TESTWorkflow当前状态是In Development,如何设置为Activate要将工作流 TESTWorkflow 从 In Development 状态设置为 Active,你必须先解决系统报错提示的“缺少所有者(Owner)”问题。在 Oracle APE…...

【2026奇点大会权威解码】:多模态内容生成的5大技术拐点与企业落地避坑指南

第一章:2026奇点智能技术大会:多模态内容生成 2026奇点智能技术大会(https://ml-summit.org) 核心突破:统一跨模态表征架构 本届大会首次公开了“OmniBridge-3”基础模型,该模型摒弃传统模态专用编码器设计,采用动态…...

AIAgent情感陪伴已进入“临界渗透期”:工信部2026Q1备案数据显示,全国仅17家机构通过情感意图识别三级认证

第一章:AIAgent情感陪伴已进入“临界渗透期”:政策拐点与产业共振 2026奇点智能技术大会(https://ml-summit.org) 当《人工智能伦理治理指导意见(2025年修订版)》首次将“情感交互类AI服务”单列监管条目,当国家卫健…...

动力系统匹配软件:基于Matlab的整车动力系统匹配计算程序

动力系统匹配软件!本程序是基于Matlab开发的整车动力系统匹配计算软件,将整车参数及性能需求输入,直接输出动力系统性能要求,本人亲自编写开发,可将底层代码同时出。最近搞了个有意思的玩意儿——动力系统匹配计算程序…...

百度搜索算法逆向思考

百度搜索算法逆向思考技术文章大纲 搜索引擎算法基础架构分析 百度搜索算法的核心组件包括爬虫系统、索引系统、排序系统。爬虫系统负责抓取网页内容,索引系统对内容进行结构化处理,排序系统根据用户查询匹配最相关结果。 排序算法涉及数百种因素&…...

加一把锁,最坏要穿越4次用户态-内核态边界——从glibc源码拆解std::mutex的真实代价

同一把 std::mutex,同一行 lock() + unlock()。无竞争时一个完整周期约 50 纳秒,有竞争时膨胀到 5-15 微秒——差了100到300倍。 这个差距不是线性累积出来的。它在某个临界点突然跳变——从两条原子指令跳到两次系统调用、两次上下文切换、四次穿越用户态-内核态边界。你的…...

国家区块链技术与战略发展分析报告

国家区块链技术与战略发展分析报告 一、战略背景与顶层设计定位 区块链作为新一代信息技术的重要组成部分,已成为我国数字经济发展的核心信任基础设施。自 2019 年 10 月 24 日中共中央政治局就区块链技术发展现状和趋势进行第十八次集体学习以来,国家明…...

2026 AI Agent趋势:大模型驱动下的智能体技术演进路线

2026 AI Agent趋势:大模型驱动下的智能体技术演进路线 引言:从工具到伙伴——AI Agent的范式转变 在技术发展的长河中,我们见证了从单机计算到互联网,从移动应用到云原生的一次次范式转变。而今,我们正站在另一个重要的转折点:AI Agent(智能体)时代的到来。 2023年被…...

理解 JavaScript 的单线程

简单来说:JavaScript 语言规范规定了它的执行模型是单线程的,但承载它的运行环境(浏览器或 Node.js)是多进程的。一、为什么说 JS 是“单线程”?这里的“单线程”指的是 JavaScript 的“执行上下文”和“内存模型”。 …...

大模型量化秘籍:小白程序员也能轻松玩转Int8/Int4,建议收藏!

大模型量化秘籍:小白程序员也能轻松玩转Int8/Int4,建议收藏! 本文深入浅出地解析了大语言模型(LLM)量化技术的原理,解释了为何在降低显存占用和计算压力的同时,模型性能仍能基本保持。核心在于模…...

springboot高校报修与互助平台小程序(文档+源码)_kaic

5统详细设计5.1学生功能模块高校报修与互助平台小程序,在系统首页可以查看首页、我的(基本信息、收藏、学生文章、宿舍报修、室内报修、室外报修、网络报修、求助信息、用户反馈)等内容,如图5-1所示。图5-1系统首页界面图学生文章…...

CSDN收藏 | AI风口来袭!小白程序员如何抓住机遇,实现高薪转型?大模型岗位数据解读!

CSDN收藏 | AI风口来袭!小白程序员如何抓住机遇,实现高薪转型?大模型岗位数据解读! 文章通过2024-2025年软件工程岗位招聘数据图,指出计算机就业并非“凉了”,而是呈现“冷热两极分化”,AI相关岗…...

为什么你的搜索还在用纯文本?多模态大模型已成头部平台标配,错过这波升级将落后至少18个月

第一章:多模态大模型在搜索中的应用 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型正深刻重构现代搜索引擎的核心能力,使搜索从传统的关键词匹配跃迁为跨文本、图像、音频与视频的语义理解与意图对齐。用户上传一张模糊的街景照片并提问“…...

spring boot社区养老保障系统小程序(文档+源码)_kaic

第五章 系统实现 5.1老人家属前台功能模块(前端) 社区养老保险系统小程序登录界面,通过填写账号、密码等信息进行登录,如图5-1所示。 图5-1登录界面图 注册,通过填写账号、密码、昵称、手机、邮箱、身份等信息&…...

【SITS2026前沿解禁】:仅限本届会议披露的4类多模态模型轻量化方案——精度损失<0.8%、端侧时延压至117ms内

第一章:多模态大模型工程化:SITS2026技术前沿 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026大会上,多模态大模型的工程化落地成为核心焦点。与传统单模态推理不同,SITS2026提出的统一调度框架(Unified M…...

Ubuntu Touch / PureOS / PostmarketOS 太小众 - Linux 桌面发行版(Ubuntu、Debian、CentOS)根本不是移动端生态,完全没法挑战安卓

视角 顶层。 1)安卓开源 vs OpenHarmony 开源:本质结构确实一样 对,商业模式、开源结构、卡脖子风险是同一类逻辑: AOSP(安卓开源) 底层框架开源,但GMS 闭源、垄断、可卡脖子OpenHarmony&#…...

像素时装锻造坊应用场景:独立电影概念设计中的像素化分镜草图生成

像素时装锻造坊在独立电影概念设计中的应用:像素化分镜草图生成实践 1. 独立电影分镜设计的痛点与机遇 独立电影制作常常面临预算有限但创意无限的矛盾。传统分镜设计需要雇佣专业分镜师,成本高昂且周期长。而使用普通AI工具生成的分镜又往往缺乏艺术统…...

收藏!程序员小白必看:向量数据库VS知识图谱,大模型问答系统怎么选?

收藏!程序员小白必看:向量数据库VS知识图谱,大模型问答系统怎么选? 本文对比了向量数据库与知识图谱在代码知识库问答系统中的应用差异。向量数据库擅长捕捉语义相似性,但处理实体间结构化关系查询时存在局限&#xff…...

Nunchaku FLUX.1-dev惊艳案例:城市夜景+超写实材质+8K细节生成展示

Nunchaku FLUX.1-dev惊艳案例:城市夜景超写实材质8K细节生成展示 最近在玩ComfyUI里的Nunchaku FLUX.1-dev模型,说实话,这玩意儿生成图片的效果有点超出我的预期。特别是用它来搞城市夜景和超写实材质,那个细节丰富程度&#xff…...

为什么92%的L4自动驾驶项目卡在多模态对齐?:从BEV+Transformer到端到端决策链的7层技术断点拆解

第一章:多模态大模型在自动驾驶中的应用 2026奇点智能技术大会(https://ml-summit.org) 多模态大模型正深刻重塑自动驾驶系统的感知、推理与决策范式。传统 pipeline 架构依赖独立模块分别处理摄像头、激光雷达、毫米波雷达和 IMU 数据,而多模态大模型通…...

AI Agent vs Web3:哪个赛道更有钱景

如果实在没啥项目经验,可以看看知乎知学堂的AILLM开发课,最为讲的就是ai agent的应用开发,除了模型调用、对接、搭建外,还有很多「实战项目」拆解,自己做完可以写到简历里,求职面试的时候也不虚。 现在很多…...

终极SketchUp STL插件指南:3D打印模型转换快速上手教程

终极SketchUp STL插件指南:3D打印模型转换快速上手教程 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 你是否曾为…...

【SRC实战】简单FUZZ拿下高危漏洞

【SRC实战】简单FUZZ拿下高危漏洞 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息、工具等资源而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任! 01背景 开…...

如何用res-downloader轻松突破QQ音乐下载限制:一站式资源嗅探指南

如何用res-downloader轻松突破QQ音乐下载限制:一站式资源嗅探指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …...

让万物互联更简单:物联网设备iPaaS系统集成解决方案

物联网设备集成面临严峻挑战,根据Eseye 2025年报告,76%的企业因硬件盲点导致项目受阻,35%因连接不稳定增加成本与损失效率。数据迫切证明,需通过iPaaS实现统一集成,打通数据壁垒、保障安全合规,释放物联网潜…...

Agent评测体系:如何量化Agent的能力与可靠性

会根据问题选择召回策略、决定是否多次搜索、过滤重复结果,还能将高价值信息回写知识图谱库。 Agentic RAG 在普通RAG(“召回-增强-生成”)基础上更具主动性: 相比自然语言回答,精准性和可复现性更高,但对执行环境要求高,需在隔离…...

Claude API 企业用户为什么更关注账单合规

在企业数字化转型的浪潮中,大模型API已成为提升生产效率、驱动业务创新的核心基础设施。Claude凭借其强大的长文本处理、复杂逻辑推理能力,成为众多企业的首选。然而,在技术选型与落地实践中,企业用户的关注点正从模型性能向账单合…...

迁移临时数据脚本

打开PowerShell 输入命令powershell -ExecutionPolicy Bypass -File xxx.ps1这句 PowerShell 命令的作用是:临时允许执行脚本文件,并且运行指定的 .ps1 脚本。1. 每个部分是什么意思powershell启动 PowerShell 环境-ExecutionPolicy Bypass临时关闭执行策…...

HCIE为什么总是招人骂?现在还有价值吗?

说起HCIE,搞网络工程的人都清楚,它以前那可是被当成网络工程师的“终极证书”,意味着网络技术的最高水准。 不过呢,随着考这个证的人越来越多,市场环境也变了,HCIE在国内的含金量是不是还跟以前一样高呢&am…...