【发布时间】:2017-05-19 17:04:41
【问题描述】:
我一直在根据 Peter Goldsborough 的 this example 组装一个文本编辑器。文本框由 html 填充,但显示为富文本。
我已经做到了,这样用户就可以点击文本框中已经存在的超链接。但是,我不知道从哪里开始添加功能,以便用户可以在编辑时添加自己的新的可点击超链接。非常感谢知道的人指点!
(我特别想避免采用here 的方法 - 这个家伙似乎正在使用一个解析器来扫描整个文档以查找类似链接的结构并添加 html 标签。这似乎更难,也更容易出错 -比它需要的更容易,我想知道是否有一种方法可以用 html 标签包围突出显示的文本。)
我尝试了@kuba-ober 提出的以下建议,但由于我正在使用 Qt for Python 的 PyQt4 绑定,因此我对其进行了修改:
def setHyperlinkOnSelection(self, url):
cursor = self.text.textCursor()
if not cursor.hasSelection():
return False
format = QtGui.QTextCharFormat()
format.setAnchor(True)
format.setAnchorHref(url)
cursor.mergeBlockCharFormat(format)
return True
不幸的是,这不起作用,但我用它来调整 Goldsborough 的 example 中的一些格式化方法以产生以下结果:
def setHyperlinkOnSelection(self, url):
# Grab the text's format
fmt = self.text.currentCharFormat()
# Set the format to an anchor with the specified url
fmt.setAnchor(True)
fmt.setAnchorHref(url)
# And set the next char format
self.text.setCurrentCharFormat(fmt)
这会产生一个链接(蓝色带下划线的文本,当转换为 html 时,使用“a href”标签正确格式化),但它不可点击(用鼠标悬停在文本上不会改变指向手,点击没有任何作用)...
【问题讨论】:
标签: qt hyperlink pyqt qtextbrowser