1.简述

遇到一个问题是QLabel显示文件名称不完整,

QLabel支持的setWordWrap(); 只会根据单词断行,

没有单词的就换不了;

手动实现一个,可指定最多显示行数。

以下分别是1,2,3行的显示效果

2.测试例子

 m_pLabelName = new QLabel(this);m_pLabelName->adjustSize();QString strSrcName = "124532002156436230.34654536.png"QString strElidedText = elidedLineText(m_pLabelName,2,strSrcName); //指定最多显示2行m_pLabelName->setText(strElidedText);

3.函数实现代码


QString elidedLineText(QWidget *pWidget, int nLine, QString strText)
{if(nLine == 0)return "";QFontMetrics fontMetrics(pWidget->font());if(nLine == 1){return fontMetrics.elidedText(strText,Qt::ElideMiddle,pWidget->width()/2);}QStringList strListLine;//满行的都加进列表for(int i = 0; i < strText.size(); i++){if(fontMetrics.width(strText.left(i)) >= pWidget->width()/2){ //不知为何除2才显示正常strListLine.append(strText.left(i));strText = strText.right(strText.size() - i);i = 0;}}//最后不足一行的也加进去if(!strText.isEmpty()){strListLine.append(strText);}//超过指定行数 从倒数第二行开始删除bool bHasElided = false; //标记是否有省略内容while(strListLine.count() > nLine){if(strListLine.count() >= 2){strListLine.removeAt(strListLine.count()-2);bHasElided = true;}}//最后一行加了...超行  就从省略号后开始删除字符 直到不超为止if(bHasElided && !strListLine.isEmpty()){QString strLast = strListLine.last();QString strElided = "...";strLast.insert(0,strElided);while(fontMetrics.width(strLast) >= pWidget->width()/2){strLast = strLast.replace(strElided.size(),1,"");}strListLine.replace(strListLine.count() - 1,strLast);}QString strResult = strListLine.join("\n");return strResult;
}

Qt QLabel实现自动换行 字符断行 自适应相关推荐

  1. DIV限制宽度,字符断行,避免变形

    代码如下: <div style="width:740px;word-break:break-all;word-wrap:break-word;"> 参考文章 怎么强制 ...

  2. Qt QLabel行、列间距控制

    Qt QLabel行.列间距控制 先看显示效果 1.  QLabel设置行间距 QLabel支持html,所以可以用以下代码设置行QLabel中text的行间距: QString text; text ...

  3. html p自动换行超出省略,CSS自动换行、强制不换行、强制断行、超出显示省略号...

    CSS自动换行.强制不换行.强制断行.超出显示省略号 CSS自动换行.强制不换行.强制断行.超出显示省略号 CSS样式设置自动换行.强制不换行.强制断行.超出显示省略号 P标签是默认是自动换行的,因此 ...

  4. CSS自动换行、强制不换行、强制断行、超出显示省略号

    CSS样式设置自动换行.强制不换行.强制断行.超出显示省略号 P标签是默认是自动换行的,因此设置好宽度之后,能够较好的实现效果,如下所示,当设置div宽度为固定值时,p中内容能够自动换行: 但是最近的 ...

  5. phpexcel_cell 获取表格样式_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...

    精品推荐 国内稀缺优秀Java全栈课程-Vue+SpringBoot通讯录系统全新发布! Docker快速手上视频教程(无废话版)[免费] 作者:E-iceblue https://www.cnblo ...

  6. 3文字怎么断行_Word闹鬼,行首出现删不掉的空格怎么办?

    昨天写一份报告时,遇到了一个让我困扰2小时之久的问题.首先是我从pdf文档复制文字到word文档时,发现复制内容会连同断行位置一起保留下来. 如图所示 为了节省时间,我写了个小程序,用于清除复制内容里 ...

  7. 袁创:文本编辑器中文字断行及排版算法研究

    文本编辑器是一种非常复杂的图形软件,涉及到的很多开发技巧和软件结构都是传统的数据库程序开发中所从未应用的,因此掌握相关技术的人是非常的少的.在其中文字断行及排版算法是编辑器开发中的核心算法之一.如果没 ...

  8. java操作跨页的word cell_Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行...

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  9. java操作跨页的word cell_Java 创建Word表格/嵌套表格、添加/复制表格行或列、设置表格跨页断行...

    概述 表格作为一种可视化交流模式及组织整理数据的手段,在各种场合及文档中应用广泛.常见的表格可包含文字.图片等元素,我们操作表格时可以插入图片.写入文字及格式化表格样式等.下面,将通过Java编程在W ...

  10. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

最新文章

  1. java.lang.RuntimeException: Parcelable encountered IOException writing
  2. TCRP风控管理师知识点:信贷评分卡模型授信
  3. matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名
  4. 如何一站式快速构建企业全场景数据库管理平台?
  5. 最新详细的JMM内存模型(三天熬夜血肝)
  6. oralce load的时候使用触发器会导致load慢吗_你真的了解性能压测中的SLA吗?
  7. 英特尔预计第12代酷睿H系列处理器将有超过100款设备采用
  8. 一起谈.NET技术,asp.net控件开发基础(17)
  9. android 函数式编程,响应式编程在Android中的应用
  10. 求助可移动磁盘显示没有格式化
  11. 双纤网速叠加+GS105E实现单线三用+AC86+68组网Aimesh实现无线漫游
  12. python爬虫实战--爬取猫眼专业版-实时票房
  13. bzip2: Data integrity error when decompressing--apt-get update
  14. 计算机学院可以举办活动,计算机学院举办2019年家长开放日系列活动
  15. IBM获5896项专利连续18年蝉联年度冠军
  16. spring中的JdbcTemplate的使用方法
  17. 英语口语:进外企的一道坎
  18. 韩语学习笔记(1)音标与输入法
  19. 最强连一连(C语言算法解析)
  20. android动态平分屏幕,Android开发RecyclerView的item平分屏幕

热门文章

  1. kmeans算法c语言代码,ML算法与代码实现——Kmeans(案例)
  2. Luogu1456 Monkey King
  3. oracle srvctl命令,关闭RAC、srvctl命令
  4. oracle erp 用户手册,oracleerp用户手册-mrp
  5. linux重定向文件容加时间,linux – Shell重定向和文件I / O持续时间
  6. mysql非阻塞通信协议_NIO 的非阻塞式网络通信
  7. ubuntu java 中文_java部署ubuntu后中文显示问号问题
  8. 由于计算机是中文名ccs软件安装出现错误_UG软件不会解决的二十个问题解决方法总结...
  9. mobilenet cpu 加速_AMD锐龙5000系列CPU价格公布 哪款才是性价比之王_搜狐汽车
  10. sqlserver高可用方案_PowerJob 的自实现高可用方案,妙妙妙