qtextedit 默认文案_QTextEdit的paste

背景

QTextEdit中粘贴一大段文字时,EasyDraft中粘贴进去的文字们的格式就乱了,处于无格式。还有在EasyDraft中选中一些文字进行拖放动作时,格式也会混乱。

解决

这两种都牵涉到QTextEdit粘贴行为,我们可以截获剪切板(clipboard)的内容,然后自行修改调整格式,再手动插入到QTextEdit中。正好,QTextEdit提供了对应的保护成员函数:insertMimeData()

virtual void insertFromMimeData( const QMimeData * source)

于是我们重现实现该函数

void EDTextEdit::insertFromMimeData( const QMimeData *source) {

if (source->hasText() ) {

QString context = source->text();

QStringList conList = context.split("\n");

QTextCursor cursor = this->textCursor();

int origState = cursor.block().userState();

for (int i = 0; i < conList.length(); ++i) {

cursor.insertBlock(/* 格式设置在此 */);

cursor.insertText(conList[i]); //插入文本内容

cursor.block().setUserState(origState);

}

}

}

20130118补充:

这样在编辑框中复制粘贴本身的内容,原有的剧本元素格式也全部被弄成了光标处的格式了,所以我们应该判断一下,如果内容包含了剧本格式,那么就执行默认粘贴行为。

怎样判断该内容包含了剧本格式呢,我们使用source->formats()函数,打印出了当这种情况时,格式列表,放回内容为("text/html", "application/vnd.oasis.opendocument.text", "text/plain"),这里的"application/vnd.oasis.opendocument.text"应该就是我们的格式,所有若source的格式包含了该格式,就执行默认行为

void EDTextEdit::insertFromMimeData( const QMimeData *source) {

if (source->hasText() && !source->hasFormat("application/vnd.oasis.opendocument.text")) {

// 修改格式并插入到文档中,代码同上

} else {

// 默认行为

QTextEdit::insertFromMimeData(source);

}

}

说一下这个QMimeData的hasFormat()函数,给它一个Qt识别的格式的字符串,比如"text/plain","text/html","text/uri-list", "application/x-qt-image"等等,你可以使用QMimeData::formats()函数来查看。

Qt文档中的说明

Drag and Drop

QTextEdit支持用户自定义的drag和drop行为.

默认情况下,当用户drop一些纯文本,HTML,富文本这种MIME数据时,QTextEdit会直接插入到文档中。

你可以通过重新实现 canInsertFromMimeData() 和 insertFromMimeData() 来支持额外的MIME数据类型

例如,允许用户拖拽图片到QTextEdit里,你可以这么实现:

bool TextEdit::canInsertFromMimeData( const QMimeData *source ) const {

if (source->hasImage())

return true;

else

return QTextEdit::canInsertFromMimeData(source);

}

这样,使其返回true,我们就增加支持了image MIME types. 其他的MIME类型,我们使用默认的实现.

void TextEdit::insertFromMimeData( const QMimeData *source ) {

if (source->hasImage()) {

QImage image = qvariant_cast(source->imageData());

QTextCursor cursor = this->textCursor();

QTextDocument *document = this->document();

document->addResource(QTextDocument::ImageResource, QUrl("image"), image);

cursor.insertImage("image");

}

}

我们从QVariant中解包图像数据,并把它作为一个resource插入到文档中。

Powered by Sublog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/514317.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四范式:现代存储架构下的系统优化实践

8月21日&#xff0c;白玉兰开源联合示说网主办的“开源大数据技术线上meetup”特邀约大数据领域的前沿技术专家&#xff0c;就大数据存储的关键技术、挑战和当前应用展开交流讨论&#xff0c;阵容强大、内容全面。第四范式体系架构科学家&#xff0c;高性能计算Team leader卢冕…

穿越疫情,阿里云3000万补贴助力中小企业寒冬突围

简介&#xff1a; 2021年&#xff0c;活下去&#xff0c;是所有中小企业的一致心愿。冬将尽&#xff0c;春将来。我们也都在迫切等待着百花齐放的春天到来&#xff0c;阿里云愿和广大中小企业一起守望相助&#xff0c;共待山河无恙&#xff0c;春暖花开&#xff01; 简介&#…

KubeVela:标准化的云原生平台构建引擎

简介&#xff1a; 本文由“GO 开源说”第三期 KubeVela 直播内容修改整理而成&#xff0c;视频内容较长&#xff0c;本文内容有所删减和重构。 KubeVela 的背景 KubeVela 是一个基于 Go 语言开发的云原生平台级开源项目&#xff0c;这个项目是去年 11 月中旬正式发布的。虽然发…

axis2 默认端口_基于 AXIS2/C 的 C 语言库实现对提供 REST API 的系统进行数据访问...

基于 AXIS2/C 的 C 语言库实现对提供 REST API 的系统进行数据访问宋 东平 和 赵 健2013 年 3 月 07 日发布AXIS2/C 简介和 REST 及 REST API 相关内容的简介AXIS2/C 简介Axis2/c 是基于 C 语言实现的 Web Service 引擎&#xff0c;基于 Axis2 架构&#xff0c;用于提供 Web 服…

漫画:什么是自动驾驶?

作者&#xff1a;小灰来源&#xff1a;程序员小灰什么是自动驾驶自动驾驶&#xff0c;也被称为无人驾驶&#xff0c;顾名思义&#xff0c;是指交通工具在没有人类操作的情况下&#xff0c;也能够完成环境的感知与导航&#xff0c;顺利到达目的地。从传统的手动驾驶到智能的自动…

一场关于动态化开发实践的技术探讨

简介&#xff1a; 开发团队在面临业务高并发需求时&#xff0c;如何对技术模型进行迭代升级&#xff1f; 在过去的一年中&#xff0c;经过跟支付宝移动端团队和广大开发者的交流和沟通&#xff0c;我们了解到大家在涉及到关于移动应用跨端开发的过程中遇到的一些问题&#xff0…

iis设置服务器文件权限设置,iis7如何配置写入权限以上传文件---急急急

这是我上传文件的代码&#xff1a;WebClient myWebClient new WebClient();myWebClient.Credentials CredentialCache.DefaultCredentials;BinaryReader br new BinaryReader(fs);Byte[] postArray br.ReadBytes(Convert.ToInt32(fs.Length));Stream postStream myWebClie…

云效故障定位研究论文被ICSE 2021 SEIP track收录

近期&#xff0c;由阿里云云效团队联合复旦大学CodeWisdom研究团队、阿里技术风险部安全生产团队&#xff0c;合作完成的论文《MicroHECL: High-Efficient Root Cause Localization in Large-Scale Microservice Systems》被ICSE 2021 SEIP track录用。本文针对大规模微服务系统…

CSDN 开学见面礼!3 周带你 Get 大厂工程师基础能力

暑假即将结束&#xff0c;金秋开学季来袭。别让年轻的自己虚度光阴&#xff0c;现在加入C友会&#xff0c;大厂CTO级别导师陪你加buff&#xff01;10&#xff0b;场考前辅导&#xff0c;50个任务文档&#xff0c;600&#xff0b;分钟大咖讲解与答疑&#xff0c;3周带你掌握大厂…

迷雾世界无限号服务器,迷雾世界部分服务器互通公告_迷雾世界部分服务器3月31日数据互通详情分析_手心游戏...

迷雾世界部分服务器3月31日数据互通公告&#xff01;迷雾世界亲爱的玩家&#xff1a;为了优化游戏体验&#xff0c;更好地提升组队、交互的互动体验&#xff0c;开发组在3.27 -3.30对所有玩家进行了关于数据互通的调查投票。结果显示&#xff0c;78%的玩家投票同意。因此&#…

一文读懂云上DevOps能力体系

简介&#xff1a; 阿里云ECS自动化运维套件架构师&#xff0c;深度拆解云上运维能力体系建设&#xff1a;自动化运维等级金字塔、自动化运维的进阶模式、DevOps的基础核心、云上标准化部署三大能力…… 序言 云计算行业已经有十多年的发展了&#xff0c;话题早已从“要不要上云…

mcem r语言代码_R语言阈值自回归模型(TAR)代码示例

原文链接&#xff1a;R语言时间序列TAR阈值模型分析​tecdat.cn阈值模型用于统计的几个不同区域&#xff0c;而不仅仅是时间序列。一般的想法是&#xff0c;当变量的值超过某个阈值时&#xff0c;过程可能表现不同。也就是说&#xff0c;当值大于阈值时&#xff0c;可以应用不同…

【洛谷算法题】P4414-[COCI2006-2007#2] ABC【入门2分支结构】Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P4414-[COCI2006-2007#2] ABC【入门2分支结构】Java题解&#x1f30f;题目描述&a…

EDAS微服务应用同城容灾最佳实践

简介&#xff1a; 大多数业务应用只要做到同城双活&#xff0c;就可以避免掉大多数数据中心不可用故障。本实践就是帮助大家高效、低成本地实现自己的业务应用具备同城双活容灾能力。 前言 上云目前已经是绝大数企业首选的IT基础设施建设方案&#xff0c;但是云上仍然存在一些…

脸书推出VR视频会议应用程序 正式跨出元宇宙第一步;三家公司新入选福布斯2021云计算百强榜;微软挖来亚马逊云业务顶级高管贝尔...

NEWS本周新闻回顾微软挖来亚马逊云业务顶级高管贝尔微软公司已经聘请亚马逊云业务高管查理贝尔担任其企业副总裁。鉴于微软的Azure 云业务正试图从亚马逊 AWS 手中争夺份额&#xff0c;这一挖角行动可以说是微软的一次胜利。在亚马逊前 AWS 主管安迪贾西被任命为亚马逊 CEO 后&…

jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件

AjaxFileUpload.js并不是一个很出名的插件&#xff0c;只是别人写好的放出来供大家用&#xff0c;原理都是创建隐藏的表单和iframe然后用JS去提交&#xff0c;获得返回值。当初做了个异步上传的功能&#xff0c;选择它因为它的配置方式比较像jQuery的AJAX&#xff0c;我很喜欢。…

三字经带拼音a4打印版_人教版八年级下册英语6单元重点单词带音标打印版

UNIT 6shoot [ʃu:t] v. 投篮&#xff0c;射击&#xff0c;发射stone [stəʊn] n. 石头weak [wi:k] adj. 虚弱的&#xff0c;柔弱的god [ɡɒd] n. 上帝&#xff0c;神remind [rɪmaɪnd] v. 提醒&#xff0c;使想起bit [bɪt] n. 一点&#xff0c;小块a little bit 有点儿&am…

拥抱云原生,Fluid结合JindoFS :阿里云OSS加速利器

简介&#xff1a; Fluid 是一个开源的 Kubernetes 原生的分布式数据集编排和加速引擎&#xff0c;主要服务于云原生场景下的数据密集型应用。在 Fluid 上使用和部署 JindoRuntime 实现数据集的可见性、弹性伸缩、数据迁移、计算加速等&#xff0c;并流程简单、兼容原生 k8s 环境…

【观点】传统企业如何在数字化时代实现进化?

简介&#xff1a; 我们看到的数字化的大多数场景集中于日常商业消费活动&#xff0c;背后其实是超越个体行为的场景变革。 究竟是谁在承载这个时代一步步走进数字化场景&#xff1f;又是谁通过数字化技术与解决方案帮助他们实现场景变革&#xff1f;这个过程是什么样的&#xf…

网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用

编辑 | 宋 慧 出品 | CSDN云计算 头图 | 轻舟低代码平台2.0发布会现场 8月26日&#xff0c;网易数帆正式发布轻舟低代码应用开发平台2.0版本&#xff08;以下简称“轻舟低代码平台”&#xff09;&#xff0c;以全新的可视化编程语言为特色&#xff0c;针对中等复杂度的企业级应…