背景
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);
}
}