Qt 5.15.2 QTextEdit无法设置新字体的处理方式
首发于我的个人博客:xie-kang.com
博客内有更多文章,欢迎大家访问
原文地址
在使用QT 5.15.2 开发的过程中碰到了件怪事,下列代码无法给QTextEdit选中的文字设置字体:
QTextCursor cursor = m_textEdit->textCursor();
QTextCharFormat tempCharFmt;
tempCharFmt.setFontFamily("微软雅黑");
cursor.mergeCharFormat(tempCharFmt);
这代码在我们客户端(基于Qt 5.10.x)工作很久了,为啥现在会失效呢。
排查了一遍,发现在mergeCharFormat后,两个Qt版本的m_textEdit->toHtml()返回的值不一样。
5.10.x 返回的html中,font-family的值只有一个:
<HTML>
...font-family:'微软雅黑';...
</HTML>
5.15.2 返回的html中,font-family的值却有两个:
<HTML>
...font-family:'微软雅黑','其它字体';...
</HTML>
有点奇怪,我使用Qt示例的富文本编辑器也测试了一遍,这回两个Qt版本QTextEdit返回的html却又一样了。
继续排查,发现QTextCharFormat::fontFamilys()的返回值,Qt 5.10.x返回空,而Qt.15.2一直有值。
可以肯定Qt 5.15.x QTextEdit的底层代码有所调整,但我也未在工程中排查到哪里设置QTextEdit的什么属性导致的(或者单纯某处代码使用Qt sdk不规范)。
我这里简单粗暴处理一下:
QTextCursor cursor = m_textEdit->textCursor();
QTextCharFormat tempCharFmt;
tempCharFmt.setFontFamily("微软雅黑");
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QStringList fontList;
tempCharFmt.setFontFamilies(fontList);
#endif
cursor.mergeCharFormat(tempCharFmt);
黑盒测试一遍,通过。
就先这样。
Qt 5.15.2 QTextEdit无法设置新字体的处理方式的更多相关文章
- qt中qlineedit和qtextedit右键菜单翻译成中文
没有linguist和lupdate等命令需要安装Linguist: 在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtco ...
- Qt 5中信号和槽的新语法
QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT ...
- 设置新时间校正服务器NTP SERVER
时间校正服务器IP : 10.*.*.* 适用系统:windows server 2008/windows 7 net stop w32time net start w32time w32tm /qu ...
- 1 npoi 网上 不用模板 设置密码 workbook.WriteProtectWorkbook("password", "admin"); 、、 2 locked.IsLocked = true; sheet1.ProtectSheet("password");NPOI操作EXCEL--设置密码才可以修改单元格内容 3 模板设置密码 确定原密码 设置新密码
1 workbook.WriteProtectWorkbook("password", "admin"); 还是可以进去 只读进去 可以编辑 编辑就另存为 ...
- git 查看当前仓库地址以及设置新的仓库地址
1.查看当前仓库地址 git remote show origin 2.设置新的仓库地址 1.先登录 gitlab 查看当前仓库地址: 执行修改地址命令 git remote set-url orig ...
- Qt修改图片的背景色及设置背景色为透明的方法
先上干货. Qt下修改图片背景色的方法: 方法一: QPixmap CKnitWidget::ChangeImageColor(QPixmap sourcePixmap, QColor origCol ...
- 【Android】 TextView设置个别字体样式
SpannableString msp = new SpannableString("测试"+XM+"更换当前号码将从手机发送一条普通短信进行验证"); msp ...
- OneNote无法同时设置中英文字体设置解决办法
如果你是一位OneNote老用户,无论是2003.2007还是2010或者最新的2013版本,都一直存在一个Bug,就是无法同时设置中英文字体(比如在Word中就可以分别设置不同的).我搜了一下,在微 ...
- Android TextView设置个别字体样式
TextView进一步深化: Textview 能够对其文字进行格式化. 通过查询资料,了解到格式化文字的方式主要分为两大类: 第一类:HTML标签格式化文字 代码 ...
- javascript一种新的对象创建方式-Object.create()
1.Object.create() 是什么? Object.create(proto [, propertiesObject ]) 是E5中提出的一种新的对象创建方式,第一个参数是要继承的原型,如果不 ...
随机推荐
- WDA学习(22):WDA PLG,Application跳转传参
1.15 WDA PLG,Application跳转传参 本实例Outbound Plugs页面跳转传参,URL跳转Application传参. 1.创建Component:Z_TEST_WDA_L6 ...
- OpenStack 虚拟机制作qcow2格式镜像
虚拟机拍摄快照导出1.将虚拟机制作成镜像(即拍摄快照):2.利用该虚机的快照,创建一个快照卷,大小是根据快照的大小自动设置的:3.利用命令将快照卷 upload-to-image 到虚机的快照内 ci ...
- Python的入门学习之 Day 7——from“夜曲编程”
Day 7 time: 2021.8.4. 今天主要将"if-else"再扩展, 得到"if-elif-else"模型.它与"if-else" ...
- vue后台管理系统
1. 项目概述: 根据不同的应用场景,电商系统一般都提供了 PC 端.移动 APP.移动 Web.微信小程序等多种终端访问方式. 2. 电商后台管理系统的功能 电商后台管理系统用于管理用户账号.商品分 ...
- ESP8266开发(物联网)
使用开发板制作wifi干扰器https://www.jianshu.com/p/f064ca36ee92
- react+antd pro实现【列表可实时行内编辑】的弹窗表单组件
纯列表版效果展示: ① 初始无值,展示为唤醒按钮+文案外链 ②点击按钮唤醒弹窗(简易版示意图) ③配置后 可编辑表格组件文档: https://procomponents.ant.design/com ...
- 关于DELL服务器风扇远程控制失效
关于DELL服务器风扇远程ipmitool控制失效 去年12月,公司突然断电,公司有一台DELL 720XD服务器,自从断电之后,使用ipmitool命令行控制风扇速度就失效了,因为之前忙其他的项目, ...
- element-ui跨行
1 <template> 2 <el-table :data="scheduleList" :span-method="objectSpanMethod ...
- 排查占用cpu最高线程
- redis 配置哨兵模式时出现的问题(redis 版本 6.2.5)
今天准备搭建一个 redis 集群(redis 版本 6.2.5),在这之前要先配置好哨兵模式. 但是在配置哨兵模式时出现了问题.之前没有搭建集群时(一主两从,三台虚拟机)可以顺利配置好,而搭建集群时 ...