PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解 | 您所在的位置:网站首页 › qt图片编辑器 › PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解 |
专栏:Python基础教程目录
专栏:使用PyQt开发图形界面Python应用
专栏:PyQt入门学习
老猿Python博文目录
一、概述
QTextEdit是一个高级的所见即所得的文档查看器和编辑器,支持使用HTML4样式标记的富文本格式,可以显示图像、列表和表格。 PyQt的富文本处理提供了一系列丰富的类,包括QTextEdit、QTextDocument、QTextCharFormat、QTextCursor、QTextBlock、QTextList、QTextFrame、QTextTable、QTextBlockFormat、QTextListFormat、QTextFrameFormat、QTextTableFormat等,如果要介绍清楚需要花比较多的时间,同时鉴于HTML的处理方面,可以利用Python中BeautifulSoup模块强大的功能解析和编辑(可以参见老猿Python的爬虫专题),因此本部分不进行详细介绍。推荐大家按如下几篇文章了解: 《Qt富文本编辑器QTextDocument》 QTextEdit和QTextDocument Qt之文本编辑 二、属性文本编辑QTextEdit在Designer中可以设置的属性如下:
除了Designer中可以设置的属性外,QLineEdit还有个plainText属性: plainText:plainText属性用于保存编辑器中的纯文本,调用toPlainText()会返回编辑器中的纯文本,如果文本编辑具有其他内容类型(如html标记),调用toPlainText()不会将内容转换为纯文本,唯一例外是会将(non-break space,在HTML中表示1个空格)替换为空格,可以调用setPlainText()方法修改该属性的值。请参考《PyQt(Python+Qt)学习随笔:QTextEdit的setText、setHtml、setPlainText之间的区别》 三、重要方法下面复杂的方法会介绍调用语法,不复杂的方法就不介绍调用语法,大家可以官方文档速查: append方法 append方法是个槽方法,该方法是在编辑器的最后新加一段参数对应的文本,该段文本的格式与当前光标所在段相同。调用语法:append(str text) canPaste()方法:用于返回是否可以从剪切板中粘贴文本到编辑器中 clear()方法:槽方法,清楚编辑器中所有文本,redo/undo历史也会被清除 copy方法:槽方法,用于将编辑器中选中文本拷贝到剪切板中 createStandardContextMenu方法: 这个方法都用于创建在编辑器中使用鼠标右键时显示的弹出菜单,只不过有带参和不带参的两种调用方式,带参数的是在文档中指定位置弹出,这样可以实现在编辑器的不同位置会弹出不同的快捷菜单。调用语法:createStandardContextMenu()、createStandardContextMenu(QPoint position) currentCharFormat()方法:返回当前的字符格式,其类型为QTextCharFormat,QTextCharFormat用于控制QTextEdit中的文本格式(这些文本的存储类型为QTextDocument对象,可以通过QTextEdit的document()方法获取,关于QTextCharFormat和QTextDocument对象在本文中不详细介绍),这些文本格式控制信息用于指定文本的一些可视化格式,如同超文本中的可视化格式控制信息 cursorForPosition()方法:返回指定位置的QTextCursor文本光标对象,QTextCursor文本光标是通过模拟文本编辑器中光标行为的编程接口,用于访问和修改文本文档的内容和底层结构的对象。QTextCursor包含有关光标在QTextDocument中的位置及其所做的任何选择的信息。QTextCursor是根据文本光标在文本编辑器中的行为方式建模的,它提供了通过用户界面执行标准操作的编程方法。 document()方法:document方法返回文本编辑器依赖的QTextDocument文档管理对象,通过该对象可以对文本进行丰富的操作 ensureCursorVisible()方法:使用该方法确保编辑器中的光标可见,如果当前不可见则可以滚动文本 find()方法:在编辑器中查找指定字符串,调用语法: bool find(str exp, QTextDocument.FindFlags options = QTextDocument.FindFlags()) bool find(QRegExp exp, QTextDocument.FindFlags options = QTextDocument.FindFlags())其中的exp可以是普通字符串,也可是QRegExp 类型的正则表达式,其中options用于指定是向前或向后查找、查找时是否匹配大小写、是否整词匹配,具体取值请参考官方文档。当exp为正则表达式则是否匹配大小写的选项被忽略,而是由正则表达式来控制是否匹配大小写 insertHtml()方法:将参数给定文本按照HTML文本处理插入当前位置 insertPlainText()方法:将参数给定文本插入当前位置 moveCursor()方法:控制编辑器中光标进行移动,调用语法:moveCursor(operation, mode = QTextCursor.MoveAnchor),其中operation为枚举类型QTextCursor.MoveOperation,用于控制光标的移动方式,如移动到文档开始、移动到行首等,具体取值参考官方文档,mode 为枚举类型QTextCursor.MoveMode,具体取值参考官方文档 paste()方法:paste是槽方法,将剪切板的文本拷贝到当前位置 redo()、undo()方法:undo、redo是槽方法,undo()方法执行后可以使用redo重新执行最后一次的操作 selectAll()方法:selectAll是槽方法,选择所有文本 setCurrentCharFormat()方法:设置文本格式控制信息,调用语法:setCurrentCharFormat(QTextCharFormat format) setTextBackgroundColor()方法:setTextBackgroundColor是槽方法,设置背景色,可以通过textBackgroundColor()方法获取对应值 setTextColor()方法:setTextColor是槽方法,设置文本颜色,可以通过textColor()获取对应值 setTextCursor()方法:setTextCursor方法用于设置当前可见的光标对象,调用语法:setTextCursor(QTextCursor cursor),当前光标对象可通过textCursor()方法获取 zoomIn()、zoomOut()方法:两者都是槽方法,放大或缩小文本字体的大小指定参数大小,基本字体大小可以通过setFontPointSize设置 四、信号 copyAvailable(bool yes):当文本被选中或去选中时发射该信号,表示是否可拷贝,选中是yes为True,去选中时为False currentCharFormatChanged(QTextCharFormat f):当前文本格式控制被改变时发射本信号 cursorPositionChanged():光标位置改变时发射该信号 redoAvailable(bool available):当redo的状态发生变化时发射该信号 :selectionChanged():当选择文本发生变化时发射该信号 textChanged():当文本内容发生变化时发射该信号 undoAvailable(bool available):当undo的状态发生变化时发射该信号 五、小结QTextEdit是一个所见即能得的富文本编辑器,可以使用setHtml()设置或替换文本,可以使用clear()删除整个文本。文本本身可以使用QTextCursor类或使用便利函数insertHtml()、insertPlainText()、append()或paste()插入。QTextCursor还可以将复杂的对象(如表或列表)插入到文档中,默认情况下,文本编辑以空白换行以适应文本编辑部件。 QTextEdit中的文本对象依赖于QTextDocument类进行管理,QTextDocument类借助QTextCursor可以对文本进行丰富的操作。但限于时间和篇幅,本文并没有对QTextDocument和QTextCursor进行详细介绍。大家可以参考老猿提供的参考文档或者官网文档。 |
CopyRight 2018-2019 实验室设备网 版权所有 |