首页 > 其他分享 >Qt 5.15.2 QTextEdit无法设置新字体的处理方式

Qt 5.15.2 QTextEdit无法设置新字体的处理方式

时间:2022-10-21 21:58:17浏览次数:103  
标签:... tempCharFmt Qt QTextEdit 5.15 font

首发于我的个人博客: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);

黑盒测试一遍,通过。
就先这样。

标签:...,tempCharFmt,Qt,QTextEdit,5.15,font
From: https://www.cnblogs.com/xie-kang/p/16814891.html

相关文章

  • Qt Windows上实现毛玻璃效果
    首发于我的个人博客:xie-kang.com博客内有更多文章,欢迎大家访问原文地址前言:很多人看到这个需求的第一想法都是录制软件窗口后的桌面内容,并且加上个高斯模糊就能实现了......
  • 想到一种用json描述Qt弹性布局的方式
    规则:列表第一项描述 QHBox or QVBox 第二项描述是否可拉伸,也就是QBox or QSplitter列表可嵌套 渲染:deffun(self,ui):ifui[0]=="H":......
  • SpringBoot集成MQTT的步骤和注意事项
    最近项目用到了mqtt,所以记录下SpringBoot集成MQTT的步骤和注意事项,整理一下知识,方便自己和他人。一、pom文件里引入maven依赖jar包<dependency><groupId>org.sprin......
  • Linux 下 Qt Creator 的安装,并使用它开发你的第一个 Qt 项目全过程
    Linux下QtCreator的安装使用       Qt以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐。QtC......
  • MQTT云台如何助力分布式农村污水处理的远程管理
    随着城市化进程的推进,农村污水治理是新农村建设的重要内容。未经处理的农村生活污水排放到生态水环境中将会造成污染,进而影响居民身体健康。然而,在污水处理的实时应用,存在管......
  • QT再学习【2】:图形视图Graphics View
    一、GraphicsView框架结构的主要特点(1)在GraphicsView框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。(2)GraphicsView支持事件传播体系结......
  • MQTT协议快速了解
    一、MQTT协议简介MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上......
  • Qt添加如何添加外部库
    1.点击项目,出现以下界面2.点击添加库,外部库3.点击下一步4.选择你库文件的路径,取消不使用的linux、Mac、debug或。。。的对勾5.点击下一步,会在.pro生成相关代码,如果编译出现......
  • MQTT——java简单测试
    服务端代码:1packagebsit.mqtt.demo.one_way;23importorg.eclipse.paho.client.mqttv3.MqttClient;4importorg.eclipse.paho.client.mqttv3.MqttConnectOp......
  • Qt Quick 用cmake怎么玩子项目
    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://mp.weixin.qq.com/s/o-_aGqreuQda-ZmKktvxwA以往在公司开发众多的项目中,都会出现要求本项......