PyQt(Python+Qt)学习随笔:QTextEdit的setText、setHtml、setPlainText之间的区别
QTextEdit中提供了三个设置编辑器文本的方法,分别是setText、setHtml、setPlainText,这三者之间的区别如下:
- setHtml是个普通方法,调用时,参数内容按html文本处理,进行解析将解析后的内容显示在编辑器中,setHtml有对应的查询方法toHtml方法
- setPlainText是个槽方法,直接将参数指定文本按纯文本显示在编辑器中,不进行任何解析,setPlainText有对应的查询方法toPlainText方法
- setText是个槽方法,调用时,参数内容可以是纯文本也可以是html文本,该方法自动解析文本的内容来识别文本格式,根据格式不同来进行不同的处理,纯文本直接显示,html文本会进行解析将解析后的内容显示在编辑器中,类似于浏览器对html文档的解析。建议如果知道输入的文本格式时,准确调用上面两个方法,而不是调用setText。setText没有对应的查询方法
当输入文本是一个html文本并且会按html文本解析时,除了将解析内容显示出来,还会将html文档的基本框架(包括title、head、body、html等标签,但不含展示内容控制部分的标签如p、div、li、href、link等)保存到QTextEdit的html属性中。但是需要注意:
- 解析后展示内容相关控制的原始标签有可能会被转换为等效的标签,如div标签内只有纯文本时可能被转换为p等,具体老猿没有仔细研究
- 当html文本用toHtml输出时,是将html属性中保存的html框架文本+将显示内容对应的html文本生成输出的html文本,其中显示内容对于的html文本会被插入html属性保存文本的body标签内,并且是按照转换后的内容来生成的,与调用setHtml设置的原始内容可能会出现不同
- 当html文本使用setHtml设置为编辑器的文本后,调用toPlainText输出文本时,会将所有html标签过滤,只输出界面上展示的纯文本内容
- 当在编辑器中手工输入html标签相关的文本时,编辑器只会将其输入内容当成纯文本处理,如手工输入html标签相关的文本使用toPlainText输出文本时,会将其按照输入内容基本保持不变的输出,唯一例外是 会转换成空格输出