使用QTextCursor可以执行大多数常见的编辑操作,从基本的文本和文档元素插入到更复杂的文档结构操作。
1、基于指针的编辑
在最简单的层次上,文本文档由一串字符组成,以某种方式标记以表示文档中文本的块结构。QTextCursor提供了一个基于指针的接口,允许在字符级别上操作QTextDocument的内容。由于元素(块、帧、表等)也编码在字符流中,因此文档结构本身可以由QTextCursor更改。
通过两种方式获取QTextCursor:
第一种:
QTextEdit *editor = new QTextEdit();
QTextCursor cursor(editor->textCursor());
第二种:
QTextDocument *document = new QTextDocument(editor);
QTextCursor cursor(document);
还可以像操作数据库一样开启事务操作,以便撤回操作
cursor.beginEditBlock();
cursor.movePosition(QTextCursor::StartOfWord);
cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);
cursor.endEditBlock();
也可以获取多个QTextCursor。可以使用多个QTextCursor同时编辑同一个文档,尽管在QTextEdit小部件中只有一个QTextCursor对用户可见。QTextDocument确保每个QTextCursor正确地写入文本,并且不会干扰其他QTextCursor。
使用QTextCursor可以插入文档的元素:
insertBlock()将一个新的文本块(段落)插入光标所在位置的文档中,并将光标移动到新块的开头
insertFragment()将一个现有的文本片段插入到位于光标位置的文档中
insertImage()将图像插入光标所在的文档
insertText()将文本插入到光标所在位置的文档中
insertFrame()在光标当前块之后向文档中插入一个框架,并将光标移动到新框架中空块的开头。
insertList()将一个列表插入到文档中光标所在的位置,并将光标移动到列表中第一项的开头
insertTable()在游标当前块之后将表插入文档,并将游标移动到表后面块的开头。