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輸出文本時,會將其按照輸入內容基本保持不變的輸出,唯一例外是&nbsp會轉換成空格輸出

老猿Python,跟老猿學Python!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章