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
qtextedit 默认文案_QTextEdit的paste相关推荐
- qtextedit 默认文案_QTextEdit类(老九学堂C++会员友情翻译,不喜勿喷)
标记内返回文本. 注意:仅当font-size未设置为固定大小时,才放大HTML文档. Using QTextEdit as an Editor - 使用QTextEdit作为编辑器 有关将QText ...
- qtextedit 默认文案_强大的QTextEdit功能 -
int QTextEdit::linesOfParagraph ( int para ) const 返回para段落的行数,或者如果在para索引没有这个段落,返回-1. bool QTextEdi ...
- qtextedit 默认文案_QT中常用的控件说明.md
2主窗口类型 有三种窗口 QMainWindow QWiget QDialog QMainWindow:可以包含菜单栏,工具栏和标题栏,是 最常见的窗口显示形式. QDialog:是对话窗口的基类.没 ...
- qtextedit 默认文案_QT-纯代码控件-QSplitter(分裂器)
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41488943/article/de ...
- qtextedit 默认文案_Qt设置QTextEdit和QLabel的字体颜色 | 学步园
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); connec ...
- qtextedit固定内容_QTextEdit详细操作
一.QTextEdit特性 QTextEdit是一个高级的WYSIWYG(What You See Is What You Get所见即所得)编辑/查看器,支持使用HTML4标签子集的富文本格式. Q ...
- qt 在qtextedit显示数组_qtextedit获取内容
QT中怎样提取QTextEdit文本框中的内容? 我这样写的 QString stri; stri=text->toPlainText(); 但我发现文本框中QT中提取QTextEdit文本框中 ...
- qtextedit固定内容_QTextEdit选中某行文本
QTextEdit选中某行文本 因为要做一个RPG游戏里的那种对白显示模块,由于每页能显示的篇幅是有限的,所以需要知道每页显示哪些文字.而这就需要知道一行能显示哪些文字. 在网上查了查相关的解决方法, ...
- Paste for Mac(剪切板历史管理工具)
Paste for Mac 是一款运行在Mac OS 平台上的剪切板小工具,拥有华丽的界面效果,剪切板每一条记录可显示(预览)文本,图片等记录的完整内容,可以记录最近指定条数的剪切板信息,方便用户随时 ...
最新文章
- 里海水位上升的原因_汽轮机真空下降的原因及处理
- 如何短时间提高python面向对象_初识Python面向对象阶段,你们都是怎么过来的?
- 关于阿里基础设施,你要知道的都在这里
- python线程退出_python子线程退出及线程退出控制的代码
- 信息收集——指纹识别
- 初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化
- java service 事物_Service 事务(JdbcUtils 升级)
- 测试需求分析第二部分
- c c++ sizeof
- 锐捷服务器虚拟化技术_网络设备-锐捷-交换机(S8607E)VSU虚拟化终结配置篇
- IE设置每次打开时都清除缓存
- 《编程珠玑》-- 开篇:BitMap算法用于磁盘文件排序的原理与实现
- Hasor-RSF —— 分布式服务框架
- 如何策划新闻营销的主题?
- 安卓手机分辨率修改工具的使用方法
- line-height含义
- Jmeter中参数化的使用
- A. Chess Placing
- 项目实战!用爬虫和Flask打造属于自己的电影网站
- 微信小程序之会议预约管理系统(含源码+论文+答辩PPT等)
热门文章
- 课堂上老师不讲的有趣物理知识,才是孩子最感兴趣的!
- 我们是否能信任算法?不信任又能怎么办?
- 人类繁荣的数学:数学的哈欠
- 2021年第3周人工智能方向的周报
- 标签分布学习相关研究
- An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中一种基于蚁群算法的能量有效路由)
- DButils工具使用笔记以及常见问题总结
- 【转载保存】Java丨jsoup网络爬虫登录得到cookie并带上cookie访问
- python调用shell脚本
- 当云原生遇到混合云:如何实现“求变”与“求稳”的平衡