网站建设项目团队组织结构图,成都企业建设网站,深圳市龙华区属于哪个区,滨城区住房和城乡建设局网站目录 问题原因解决方法 问题
QT Android QTextEdit 长按选中文本后#xff0c;点击复制#xff0c;然后粘贴到手机便签或者QQ中#xff0c;出现多余数据 例如#xff0c;要复制的文本为 只因你太美 但实际在便签中粘贴后的文本为 只因你太美 p, li { white-space: pre-wra… 目录 问题原因解决方法 问题
QT Android QTextEdit 长按选中文本后点击复制然后粘贴到手机便签或者QQ中出现多余数据 例如要复制的文本为 只因你太美 但实际在便签中粘贴后的文本为 只因你太美 p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } 只因你太美 多了一串类似于HTML的文本信息很奇怪。并且在WINDOWS系统下QTextEdit复制粘贴并不存在这种问题。更奇怪的是我打开小米手机自带的搜狗输入法的剪切板然后点击刚选中的内容粘贴发现并不存在这种问题。
只在长按选中长按粘贴后会出现这个问题。但是我又粘贴到微信的搜索框发现是正常的。
原因
经过查询分析发现。QTextEdit 有一个成员函数 virtual QMimeData *createMimeDataFromSelection() const; 这个成员函数会在长按文本复制、剪切的时候调用。QMimeData 内存放着要复制到剪切板的内容。我们继承QTextEdit类然后在派生类中重新实现这个virtual QMimeData *createMimeDataFromSelection() const;虚函数
QMimeData* CTextBrowser::createMimeDataFromSelection() const
{printf(createMimeDataFromSelection enter!\n);QMimeData *pMime QTextEdit::createMimeDataFromSelection();printf(pMime text:%s!\n, pMime-text().toStdString().c_str());printf(pMime html:%s!\n, pMime-html().toStdString().c_str());return pMime;
}打印出QMimeData 中的text和HTML数据发现pMime-text()和pMime-html()中都有数据。所以推测多余的数据应该来源于pMime-html()中。所以我们只要把pMime-html()中的数据清空应该就可以了。
解决方法
QMimeData* CTextBrowser::createMimeDataFromSelection() const
{printf(createMimeDataFromSelection enter!\n);QMimeData *pMime QTextEdit::createMimeDataFromSelection();QMimeData *pNewMimeData new QMimeData;pNewMimeData-setText(pMime-text());delete pMime;return pNewMimeData;
}这样修改就可了。
网上查了半天发现没有相关问题的帖子所以来分享一下。