对Html富文本支持的控件:
QTextDocument, QLabel, QTextEdit,QTextBrowser
使用HTML4 标记
打开超链接的方式
一、setOpenExternalLinks(true)
用Qt自带的setOpenExternalLinks(true)函数进行设置
二、linkActivated信号与槽函数
通过锚跳转到指定位置
- 用QLabel显示超链接
help_label = QLabel()
help_label.setText('<a style="color:#666666;font-size:15px;" href="cangti">cangti、reyuan...</a>')
help_label.linkActivated.connect(self.onShowTemplate)
跳转的槽函数:
def onShowTemplate(self, link):
# 跳转到帮助页面
help_widget = HelpWidget()
help_widget.move_to_anchor(link)
注意:href="cangti"
中对应的是html中的name
- 利用QTextBrowser显示html内容
html内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2><a id="top">这是标题,底部链接可以链接到这</a></h2>
<p>1!<br><br><br><br></p>
<p>2!<br><br><br><br></p>
<p>3!<br><br><br><br></p>
<p>4!<br><br><br><br></p>
<p>5!<br><br><br><br></p>
<p>6!<br><br><br><br></p>
<p>7!<br><br><br><br></p>
<p>8!<br><br><br><br></p>
<p>9!<br><br><br><br></p>
<p>10!<br><br><br><br></p>
<p>11!<br><br><br><br></p>
<p>12!<br><br><br><br></p>
<p>13!<br><br><br><br></p>
<p>14!<br><br><br><br></p>
<p>15!<br><br><br><br></p>
<p>16!<br><br><br><br></p>
<p>17!<br><br><br><br></p>
<p>18!<br><br><br><br></p>
<p>19!<br><br><br><br></p>
<p>20!<br><br><br><br></p>
<p>21!<br><br><br><br></p>
<p>22!<br><br><br><br></p>
<p>23!<br><br><br><br></p>
<p>24!<br><br><br><br></p>
<p>25!<br><br><br><br></p>
<p>26!<br><br><br><br></p>
<p>27!<br><br><br><br></p>
<p>28!<br><br><br><br></p>
<p>29!<br><br><br><br></p>
<p>30!<br><br><br><br></p>
<a href="#top">链接到标题</a>
<h3><a name="cangti">舱体结构命名为cangti</a></h3><br>
</body>
</html>
HelpWidget.py
class TextWidget(QWidget):
def __init__(self):
super(HelpWidget, self).__init__()
self.main_layout = QVBoxLayout(self)
self.edit = QTextBrowser()
file = QFile(os.getcwd() + "/help.html")
file.open(QFile.ReadOnly | QFile.Text)
stream = QTextStream(file)
stream.setCodec(QTextCodec.codecForName("utf-8"))
self.edit.setHtml(stream.readAll())
self.main_layout.addWidget(self.edit)
def move_to_anchor(self, anchor):
self.edit.scrollToAnchor(anchor)